对于某些具有字段的集合,{ wins: Number }我如何使用MongoDB Aggregation Framework来获取集合中所有文档的获胜总数?
例:
如果我有3个文件wins: 5,wins: 8,wins: 12分别,我怎么可能使用MongoDB的聚合框架返回的总数,即total: 25。
对于某些具有字段的集合,{ wins: Number }我如何使用MongoDB Aggregation Framework来获取集合中所有文档的获胜总数?
如果我有3个文件wins: 5,wins: 8,wins: 12分别,我怎么可能使用MongoDB的聚合框架返回的总数,即total: 25。
db.characters.aggregate([{$group:{_id:'id',wins:{$sum:1}}}]);但是没有运气。它返回wins我有多少个字段,而不是获胜的值。
db.characters.aggregate( [ { $group: { _id: null, total: { $sum: "$wins" } } } ] )
Answers:
要在使用MongoDB的聚合框架时获取分组字段的总和,您需要使用$group和$sum:
db.characters.aggregate([ {
$group: {
_id: null,
total: {
$sum: "$wins"
}
}
} ] )
在这种情况下,如果要获取所有的总和wins,则需要使用$语法引用字段名,因为语法仅从分组文档中$wins获取wins字段的值并将它们加在一起。
您也可以sum通过传递特定值(如您在注释中所做的那样)来获得其他值。如果你有
{ "$sum" : 1 },
那实际上是所有的计数wins,而不是总数。
[ ]?没有它们也可以工作,即db.characters.aggregate({$group ... })代替db.characters.aggregate([{$group ... }])。
_id: null 是关键。+1尝试使用聚合框架而不考虑使用_id: null。
$group所示的操作。