如何在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