对于一些带有字段的集合{ 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 的聚合框架时获得分组字段的总和,您需要使用$groupand $sum:
db.characters.aggregate([ {
$group: {
_id: null,
total: {
$sum: "$wins"
}
}
} ] )
在这种情况下,如果要获取所有 的总和,则需要使用仅从分组文档中获取字段值并将它们相加的语法wins来引用字段名称。$$winswins
您也可以sum通过传入特定值来获取其他值(正如您在评论中所做的那样)。如果你有
{ "$sum" : 1 },
这实际上是所有 的计数wins,而不是总数。