MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gruppieren Sie nach Tag/Monat und nehmen Sie den Durchschnitt der Bewertung an diesem Tag/Monat in Mongo

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" } },
  } }
])