将查询 mongo 转换为 spring Mongooperations
Posted
技术标签:
【中文标题】将查询 mongo 转换为 spring Mongooperations【英文标题】:Convert query mongo to spring Mongooperations 【发布时间】:2016-11-09 23:01:54 【问题描述】:任何人都可以将该查询转换为 mongo for java (org.springframework.data.mongodb.core.MongoOperations)???
我无法在 Java 中进行此搜索。
谢谢。
db.respostas.aggregate([
"$group":
"_id":
"per":"$pergunta",
"res":"$resposta"
,
"respostaCount":
"$sum":1
,
"$group":
"_id":"$_id.per",
"respostas":
"$push":
"resposta":"$_id.res",
"count":"$respostaCount"
,
"count":
"$sum":"$respostaCount"
,
"$sort":
"count":-1
])
【问题讨论】:
请添加您目前尝试过的内容。 我所拥有的只是那个,因为我不知道该怎么做@Veeram:Aggregation agg = newAggregation( group("pergunta", "resposta") .count().as("respostaCount"), group(), sort(Sort.Direction.DESC, "count") );
请添加示例文档
【参考方案1】:
你可以试试这样的。
Aggregation agg = newAggregation(
group(fields().and("per", "$pergunta").and("res", "$resposta")).count().as("respostaCount"),
group(fields("$_id.per")).push(new BasicDBObject("resposta", "$_id.res").append("count", "$respostaCount"))
.as("respostas").sum("respostaCount").as("count"),
sort(Sort.Direction.DESC, "count"));
【讨论】:
经过一些测试,我看到信息是正确的。我做了一些更改,因此:Aggregation agg = newAggregation( group(fields().and("per", "$pergunta").and("res", "$resposta")).count().as("respostaCount"), group(fields("$_id.per")).push(new BasicDBObject("resposta", "$_id.res").append("count", "$respostaCount")).as("respostas"), sort(Sort.Direction.DESC, "count"));
它只缺少所有答案的总和,我试图在最后加上一个.sum ("$respostaCount").as("count")
,但它不起作用,然后被删除。
更新了答案。请验证。以上是关于将查询 mongo 转换为 spring Mongooperations的主要内容,如果未能解决你的问题,请参考以下文章
将查询 mongo 转换为 spring Mongooperations
将 $facet mongo 查询转换为 Spring Data
使用spring data mongo 多数据源如何切换 使用注解形式 不影响使用 MongoRepository 接口方案。