我有一些文件。每个文档都有两个字段-code
和status
。我的mongodb集合包含一些类似于以下内容的文档:
[{
"code":"1234",
"status":"A"
},
{
"code":"1234",
"status":"A"
}
{
"code":"1234",
"status":"B"
},
{
"code":"1235",
"status":"A"
}]
我想按代码的状态查找计数。我想要的输出如下所示:
[
{"code":"1234", "counts": {"A":2, "B":1}},
{"code":"1235", "counts": {"A":1, "B":0}}
]
如何使用Spring Data MongoDB做到这一点?我是mongodb的新手。
更新我已经设法编写了mongodb查询。这里是:
db.mycollection.aggregate(
[
{"$group": {"_id": {"code":"$code", "status":"$status"}, "total": {"$sum":1}}},
{"$group": {"_id": "$_id.code", "counts": {"$push": {"status": "$_id.status", "count":"$total" }}}},
{"$project" : {"code":"$_id", _id: 0, counts:1}}
])
谁能帮忙如何在spring data mongodb中编写此查询?
请使用以下代码签出
DBObject counts= new BasicDBObject();
counts.put("status", "status");
counts.put("count", "count");
AggregationResults<Output> results = operations.aggregate(
newAggregation(Codes.class,
group("code","status").count().as("count"),
group("code").push(counts).as("counts")
), Output.class);
我认为Codes.java类是您的输入文档类,而Output.java类是您想要的结果类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句