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