我有以下结果:
"result" : [
{
"_id" : "London",
"count" : 499
},
{
"_id" : "Paris",
"count" : 135
},
{
"_id" : "Lviv",
"count" : 95
}
]
这是查询:
{"$group":{
_id: "$city",
"count" : {"$sum":1}
}
}
所以,我想要一些如何计算不仅分组的所有字段。我认为最好显示预期结果:
"result" : [
{
"_id" : "London",
"count" : 499,
"total" : 729
},
{
"_id" : "Paris",
"count" : 135,
"total" : 729
},
{
"_id" : "Lviv",
"count" : 95,
"total" : 729
}
]
预期结果具有“总计”字段,其被计算为“计数”字段的量(499 + 135 + 95 = 729)。 已编辑:我必须只使用聚合框架!
有人可以帮我这个吗?
答案 0 :(得分:1)
您必须先计算总数:
db.coll.count( ..., function( err, total ) {
然后在聚合命令中使用该结果:
{
"$group": {
_id: "$city",
count: { "$sum": 1 },
total: total
}
修改强>
如果您只想使用聚合框架,请尝试使用此代替db.coll.count()
:
{
"$group": {
_id: 1,
count: { "$sum": 1 }
}
}
答案 1 :(得分:0)
db.collection.count()
之类的声音实际上可以为您提供结果。这是因为你实际上只是总结那里的所有文件。