Als u documenten per dag/maand wilt groeperen en de maandsleutel in uw uitvoer wilt retourneren, moet u eerst $project
de sleutelvelden naar de juiste indelingen met behulp van de Datum
operators, in het bijzonder de $dateToString
en $month
exploitanten.
Dit kan in een $project
fase voorafgaand aan de $group
stap maar niet nodig sinds de $group
pijplijn herbergt voornamelijk de accumulator
operators.
In de voorgaande $group
pijplijn, kunt u de documenten groeperen op de geformatteerde datumsleutel, aggregeren met behulp van de $avg
operator en retourneer de maand als een geheel getal uit de vorige pijplijn met behulp van $first
accumulator operator.
Het uitvoeren van de volgende aggregatiepijplijn zou u het gewenste resultaat moeten geven:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])