Sie können die Aggregationspipeline
verwenden um berechnete Felder zu einem Ergebnis hinzuzufügen. Nachfolgend finden Sie einige Beispiele für die Verwendung von mongo
Shell, sondern die Syntax in Mongooses Aggregate()-Helfer
ist ähnlich.
Um beispielsweise Summen (pro Benutzerdokument) zu berechnen, können Sie den $project
Stufe
:
db.user.aggregate(
// Limit to relevant documents and potentially take advantage of an index
{ $match: {
user_id: "foo"
}},
{ $project: {
user_id: 1,
total: { $add: ["$user_totaldocs", "$user_totalthings"] }
}}
)
Um Summen über mehrere Dokumente hinweg zu berechnen, müssen Sie eine $group verwenden
Stufe
mit einem $sum
Akku
, zum Beispiel:
db.user.aggregate(
{ $group: {
_id: null,
total: { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
totaldocs: { $sum: "$user_totaldocs" },
totalthings: { $sum: "$user_totalthings" }
}}
)
Möglicherweise möchten Sie nur die eine Gesamtsumme
aufstellen; Ich habe totaldocs
hinzugefügt und Gesamtsummen
als Beispiele für die Berechnung mehrerer Felder.
Eine Gruppen-_id
von null
kombiniert Werte aus allen Dokumenten, die an $group
übergeben werden Stufe, aber Sie können hier auch andere Kriterien verwenden (z. B. die Gruppierung nach user_id
).