Aby pogrupować dokumenty według dnia/miesiąca i zwrócić klucz miesiąca w wynikach, musisz najpierw $projekt
pola kluczowe do odpowiednich formatów przy użyciu Daty
operatorów, w szczególności $ dateToString
i $miesiąc
operatorów.
Można to zrobić w $projekt
etap przed $group
krok, ale nie jest to konieczne, ponieważ $grupa
potok obsługuje głównie akumulator
operatorów.
W poprzednim $group
potok, możesz pogrupować dokumenty według sformatowanego klucza daty, agregować przy użyciu $avg
operatora i zwróć miesiąc jako liczbę całkowitą z poprzedniego potoku, używając $first
operator akumulatora.
Uruchomienie następującego potoku agregacji powinno dać pożądany rezultat:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])