我收集了以下类型的文件:
{"status": "Minor", "appId": "123", "otherFiled": "abc"}
{"status": "Minor", "appId": "123", "otherFiled": "xyz"}
{"status": "Major", "appId": "123", "otherFiled": "pqr"}
{"status": "Critical", "appId": "444", "otherFiled": "dgja"}
{"status": "Minor", "appId": "444", "otherFiled": " cknqpqr"}
{"status": "Major", "appId": "555", "otherFiled": " qdqcd"}
我正在使用spring数据mongodb,这是我的代码-
MatchOperation match = new MatchOperation(applicationIdCriteria);
GroupOperation group = Aggregation.group("status", "appId").count().as("count");
AggregationResults<TestClass> orderAggregate =
mongoOperations.aggregate(aggregate,
"appStatus", TestClass.class);
提供以下原始结果
"result": [{
"_id": {
"status": "Minor",
"appId": 123
},
"count": 2
}, {
"_id": {
"status": "Major",
"appId": 123
},
"count": 1
}, {
"_id": {
"status": "Critical",
"appId": 444
},
"count": 1
}, {
"_id": {
"status": "Minor",
"appId": 444
},
"count": 1
}, {
"_id": {
"status": "Major",
"appId": 555
},
"count": 1
}]
但是我希望得到如下结果-
"result": [{
"_id": {
"status": "Minor",
"applications": [
{
"appId": 123,
"count": 2
},
{
"appId": 444,
"count": 1
}
]
}
}, {
"status": "Major",
"applications": [
{
"appId": 123,
"count": 1
},
{
"appId": 555,
"count": 1
}
]
}, {
"status": "Critical",
"applications": [
{
"appId": 444,
"count": 1
}
]
}]
我该如何实现? 我想按状态映射结果。对于每种状态,我想查找该状态下的应用程序列表以及该状态下的应用程序次数(计数)。