Um Dokumente nach Tag/Monat zu gruppieren und den Monatsschlüssel in Ihrer Ausgabe zurückzugeben, müssen Sie zuerst $project
die Schlüsselfelder mithilfe des Datum
in geeignete Formate Operatoren, insbesondere $dateToString
und $month
Betreiber.
Dies kann in einem $project
Stufe vor der $group
Schritt, aber nicht notwendig, da der $group
Die Pipeline enthält hauptsächlich den Akkumulator
Betreiber.
Im vorangegangenen $group
Pipeline können Sie die Dokumente nach dem formatierten Datumsschlüssel gruppieren und mithilfe von $avg
-Operator und geben Sie den Monat als Ganzzahl aus der vorherigen Pipeline mit $first
Akkumulator-Operator.
Das Ausführen der folgenden Aggregationspipeline sollte das gewünschte Ergebnis liefern:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])