对于某个带有字段{ wins: Number }
的集合,我如何使用 MongoDB聚合框架来获取集合中所有文档的获胜总数?
如果我分别有wins: 5
,wins: 8
,wins: 12
的3个文档,我怎样才能使用MongoDB聚合框架返回总数,即total: 25
。
答案 0 :(得分:125)
要在使用MongoDB的聚合框架时获取分组字段的总和,您需要使用$group
和$sum
:
db.characters.aggregate([ {
$group: {
_id: null,
total: {
$sum: "$wins"
}
}
} ] )
在这种情况下,如果您想获得所有wins
的总和,则需要使用$
语法作为$wins
引用字段名称,该语法仅提取分组文档中wins
字段的值,并将它们相加。
您也可以通过传递特定值sum
其他值(就像您在评论中所做的那样)。如果你有
{ "$sum" : 1 }
,
实际上是所有wins
的计数,而不是总数。