mongodb - 具有多个字段的Spring数据mongoDB推送操作不起作用
问题描述
我在 MongoDB 中有一组数据对象——
[
{ "status" : "passed", "version" : "124" , "value" : 6 },
{ "status" : "passed", "version" : "123" , "value" : 10 },
{ "status" : "failed", "version" : "123" , "value" : 16 }
]
我想以如下格式获取它-
[
{
version: 124,
"series" :[
{
"name" : "passed",
"value" : 6
}
]
},
{
version: 123,
"series" : [
{
"name" : "passed",
"value" : 10
},
{
"name" : "failed",
"value" : 16
}
]
}
]
我应该如何编写查询?我写了这样的查询
我写了一个查询,如:
Aggregation.group("version").push(new BasicDBObject("name","$status").append("value", "$value")).as("series");
使用上面的聚合查询,我越来越喜欢:
[
{
version: 124,
"series" :[
{
"name" : null,
"value" : 6
}
]
},
{
version: 123,
"series" : [
{
"name" : null,
"value" : 10
},
{
"name" : null,
"value" : 16
}
]
}
]
似乎状态的值没有在对象中获取。我该如何解决这个问题?
解决方案
我的查询是这样的:
db.results.aggregate([{
{
"$group": {
"_id": {
"status": "$status",
"version": "$version",
},
"count": {
"$sum": 1
}
}
}, {
$group: {
_id: "$_id.version",
"series": {
$push: {
"status": "$_id.status",
"value": "$count"
}
}
}
}
]);
所以我必须将聚合查询添加为:
Aggregation.group("version").push(new BasicDBObject("_id", "$_id.status").append("value", "$value")).as("series");
推荐阅读
- javascript - 比较两个数组和唯一值计数?
- objective-c - 无法从 iOS 13 模拟器中的钥匙串中检索我的密码
- python - 保存后数据帧类型丢失
- drools - 如何使用 Business Centrol Rest API 更新项目信息?
- android - 解决冲突后,android studio 没有显示任何要提交的文件
- python - IsolationForest 的 Predict_proba
- excel - Application.WorksheetFunction 与 WorksheetFunction
- java - 我尝试在 REST 服务中使用时间戳,但我只看到 nanos
- google-app-maker - Appmaker 根据用户角色检索记录
- typescript - Jest 和 TypeScript 的不完整存根