83

对于一些带有字段的集合{ wins: Number },我如何使用MongoDB Aggregation Framework来获取集合中所有文档的总获胜次数?

例子:

如果我有 3 个文档分别带有wins: 5, wins: 8wins: 12我怎么能使用 MongoDB Aggregation Framework 来返回总数,即total: 25.

4

1 回答 1

183

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

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

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

数数

您也可以sum通过传入特定值来获取其他值(正如您在评论中所做的那样)。如果你有

{ "$sum" : 1 },

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

于 2013-06-11T13:30:25.450 回答