Cob*_*ear 1 mongodb mongodb-query aggregation-framework
我想在我的聚合结果中将Object作为字段返回,类似于此问题中的解决方案。但是,在上述解决方案中,聚合将导致对象数组只有该数组中的一项,而不是独立的对象。例如,类似以下查询的$push操作
$group:{
_id: "$publisherId",
'values' : { $push:{
newCount: { $sum: "$newField" },
oldCount: { $sum: "$oldField" } }
}
}
Run Code Online (Sandbox Code Playgroud)
返回这样的结果
{
"_id" : 2,
"values" : [
{
"newCount" : 100,
"oldCount" : 200
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
没有一个像这样
{
"_id" : 2,
"values" : {
"newCount" : 100,
"oldCount" : 200
}
}
}
Run Code Online (Sandbox Code Playgroud)
后者是我需要的结果。那么,如何重写查询以获得类似的结果?我可以得到最好的结果吗?
您不需要$push操作员,只需添加最终$project管道即可创建嵌入式文档。请遵循以下准则:
var pipeline = [
{
"$group": {
"_id": "$publisherId",
"newCount": { "$sum": "$newField" },
"oldCount": { "$sum": "$oldField" }
}
},
{
"$project" {
"values": {
"newCount": "$newCount",
"oldCount": "$oldCount"
}
}
}
];
db.collection.aggregate(pipeline);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |