如何在MongoDB中聚合总和以获得总计数?
对于具有字段如何在MongoDB中聚合总和以获得总计数?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,对于具有字段{wins:Number}的某些集合,如何使用MongoDB聚合框架获取集合中所有文档的wins总数 例子: 如果我有3个文档分别包含wins:5、wins:8、wins:12,我如何使用MongoDB聚合框架返回总数,即total:25总和 要在使用MongoDB的聚合框架时获取分组字段的总和,需要使用$group和$sum: db.characters.aggregate([ { $group: { _id: null, total:
{wins:Number}
的某些集合,如何使用MongoDB聚合框架获取集合中所有文档的wins总数
例子:
如果我有3个文档分别包含wins:5
、wins:8
、wins:12
,我如何使用MongoDB聚合框架返回总数,即total:25
总和
要在使用MongoDB的聚合框架时获取分组字段的总和,需要使用$group
和$sum
:
db.characters.aggregate([ {
$group: {
_id: null,
total: {
$sum: "$wins"
}
}
} ] )
在这种情况下,如果您想获得所有wins
的总和,则需要使用$
语法将字段名引用为$wins
,该语法仅从分组文档中获取wins
字段的值并将它们相加
计数
您还可以通过传入一个特定的值(正如您在注释中所做的那样)来对其他值进行求和。如果你有
{“$sum”:1}
这实际上是所有
赢家的计数,而不是总数。使用$group
操作,如中所示。@johnyhk我尝试了db.characters.aggregate([{$group:{u id:'id',wins:{$sum:1}])代码>但是没有任何运气。它返回我有多少个wins
字段,而不是wins中的值。db.characters.aggregate([{$group:{{u id:null,total:{$sum:$wins”}}}}])
@wiredparie谢谢你,它成功了。您想将其作为答案发布,以便我可以接受吗?如果此查询需要很长时间,您会怎么做?(在许多文档中运行)由于此算法必须扫描每个文档,因此您需要对结果进行缓存、预计算或过滤,以减少花费的总时间。您如何获得结果?我得到一个光标。为什么需要[]
?它在没有它们的情况下工作,即db.characters.aggregate({$group…})
而不是db.characters.aggregate([{$group…}])
.Wow,\u id:null
是这里的关键+1您尝试使用聚合框架时没有考虑使用\u id:null
。