Pour certaines collections avec un champ { wins: Number }
, comment utiliser MongoDB Aggregation Framework pour obtenir le nombre total de gains pour tous les documents d'une collection?
Si j'ai 3 documents avec wins: 5
, wins: 8
, wins: 12
respectivement, comment utiliser MongoDB Aggregation Framework pour renvoyer le nombre total, c.-à-d. total: 25
.
Pour obtenir la somme d’un champ groupé lors de l’utilisation de Aggregation Framework de MongoDB, vous devez utiliser $group
et $sum
:
db.characters.aggregate([ {
$group: {
_id: null,
total: {
$sum: "$wins"
}
}
} ] )
Dans ce cas, si vous voulez obtenir la somme de tout le wins
, vous devez vous référer au nom du champ en utilisant le $
syntaxe en tant que $wins
qui récupère simplement les valeurs du champ wins
à partir des documents groupés et les additionne.
Vous pouvez aussi sum
autres valeurs en transmettant une valeur spécifique (comme vous l'avez fait dans votre commentaire). Si tu avais
{ "$sum" : 1 }
,
ce serait en fait un compte de tous les wins
, plutôt qu'un total.