如何在MongoDB中汇总总和以获得总数?

时间:2013-06-11 12:51:42

标签: mongodb aggregation-framework

对于某个带有字段{ wins: Number }的集合,我如何使用 MongoDB聚合框架来获取集合中所有文档的获胜总数?

实施例

如果我分别有wins: 5wins: 8wins: 12的3个文档,我怎样才能使用MongoDB聚合框架返回总数,即total: 25

1 个答案:

答案 0 :(得分:125)

萨姆

要在使用MongoDB的聚合框架时获取分组字段的总和,您需要使用$group$sum

db.characters.aggregate([ { 
    $group: { 
        _id: null, 
        total: { 
            $sum: "$wins" 
        } 
    } 
} ] )

在这种情况下,如果您想获得所有wins的总和,则需要使用$语法作为$wins引用字段名称,该语法仅提取分组文档中wins字段的值,并将它们相加。

计数

您也可以通过传递特定值sum其他值(就像您在评论中所做的那样)。如果你有

{ "$sum" : 1 }

实际上是所有wins的计数,而不是总数。