{ wins: Number }
Wie kann ich bei einer Sammlung mit einem Feld das MongoDB Aggregation Framework verwenden , um die Gesamtzahl der Gewinne für alle Dokumente in einer Sammlung zu ermitteln?
Beispiel:
Wenn ich drei Dokumente mit wins: 5
, wins: 8
, wins: 12
bzw., wie könnte ich MongoDB Aggregation - Framework verwenden , um die Gesamtzahl zurückzukehren, das heißt total: 25
.
mongodb
aggregation-framework
Sahat Yalkabov
quelle
quelle
$group
Operation wie in den Dokumenten gezeigt .db.characters.aggregate([{$group:{_id:'id',wins:{$sum:1}}}]);
aber ohne Glück. Es gibt zurück, wie vielewins
Felder ich anstelle der Werte aus den Gewinnen habe.db.characters.aggregate( [ { $group: { _id: null, total: { $sum: "$wins" } } } ] )
Antworten:
Summe
Um die Summe einer gruppierten Feld zu erhalten , wenn die Aggregation Rahmen MongoDB verwenden, müssen Sie verwenden
$group
und$sum
:db.characters.aggregate([ { $group: { _id: null, total: { $sum: "$wins" } } } ] )
In diesem Fall müssen Sie, wenn Sie die Summe aller Daten erhalten möchten,
wins
auf den Feldnamen mit der$
Syntax verweisen, bei der$wins
nur die Werte deswins
Felds aus den gruppierten Dokumenten abgerufen und summiert werden.Anzahl
Sie können auch
sum
andere Werte verwenden, indem Sie einen bestimmten Wert übergeben (wie Sie es in Ihrem Kommentar getan haben). Wenn du hättest{ "$sum" : 1 }
,das wäre eigentlich eher eine Zählung aller
wins
als eine Summe.quelle
[ ]
? Es funktioniert ohne sie, dhdb.characters.aggregate({$group ... })
stattdb.characters.aggregate([{$group ... }])
._id: null
ist der Schlüssel hier. +1 Sie haben versucht, das Aggregationsframework zu verwenden, ohne darüber nachzudenken_id: null
.