我对集合执行汇总,但结果与预期不符:
bind()
集合'test'包含字段coly,id,val和每个id对于具有不同值的不同coly可以相同,并且一个id对于相同的“ coly”可以存在一次以上
聚合的目的是通过按字段'coly'<分组的“ id” 获得值的总和('val') / strong>。
mongo版本是3.4。
有什么帮助吗?
结果是:
bind
预期结果:
db.getCollection('test').aggregate(
[
{$match: { "colx" : 8323, "id" : {$in: [802, 801, 803, 805, 810, 806, 807, 808, 809, 816]}}},
{$group : {_id : { coly : "$coly" , id : "$id" } , total: {$sum: "$val"} } },
])
答案 0 :(得分:0)
你的话太含糊了。
根据您的预期结果,我认为您的查询是按coly
分组,然后按id
分组并计算每个组的总数:
db.test.aggregate([
{$match: { "colx" : 8323, "id" : {$in: [802, ....]}}},
{$group: {_id : { coly : "$coly" , id : "$id" } , total: {$sum: "$val"} } },
{$group: {_id: '$_id.coly', items: {$push: {id: '$_id.id', total: '$total'}} } }
])
这将输出:
{
"_id": 898,
"items": [
{
"id" : 801
"total" : 3355560
},
{
"id" : 805
"total" : 2760139
}
]
}