83 votes

Comment agréger une somme dans MongoDB pour obtenir un total ?

Pour une collection avec un champ { wins: Number } Comment puis-je utiliser Cadre d'agrégation MongoDB pour obtenir le nombre total de victoires sur l'ensemble des documents d'une collection ?

Exemple :

Si j'ai 3 documents avec wins: 5 , wins: 8 , wins: 12 respectivement, comment puis-je utiliser le cadre d'agrégation de MongoDB pour obtenir le nombre total, c'est-à-dire total: 25 .

187voto

WiredPrairie Points 18683

Somme

Pour obtenir la somme d'un champ groupé en utilisant le cadre d'agrégation de MongoDB, vous devez utiliser la fonction $group y $sum :

db.characters.aggregate([ { 
    $group: { 
        _id: null, 
        total: { 
            $sum: "$wins" 
        } 
    } 
} ] )

Dans ce cas, si vous voulez obtenir la somme de tous les wins vous devez faire référence au nom du champ à l'aide de l'attribut $ syntaxe comme $wins qui se contente de récupérer les valeurs de l'élément wins des documents regroupés et les additionne.

Compter

Vous pouvez sum d'autres valeurs également en passant une valeur spécifique (comme vous l'avez fait dans votre commentaire). Si vous aviez

{ "$sum" : 1 } ,

Il s'agirait en fait d'un décompte de tous les wins plutôt qu'un total.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X