Pour regrouper les documents par jour/mois et renvoyer la clé du mois dans votre sortie, vous devez d'abord $project
les champs clés aux formats appropriés en utilisant la Date
opérateurs, en particulier les $dateToString
et $month
les opérateurs.
Cela peut être fait dans un $project
étape avant le $group
étape mais pas nécessaire puisque le $group
pipeline accueille principalement l'accumulateur
opérateurs.
Dans le précédent $group
pipeline, vous pouvez regrouper les documents par la clé de date formatée, agréger à l'aide de $avg
et renvoyez le mois sous forme d'entier du pipeline précédent en utilisant $first
opérateur d'accumulateur.
L'exécution du pipeline d'agrégation suivant devrait vous donner le résultat souhaité :
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])