För att gruppera dokument efter dag/månad och returnera månadsnyckeln i din utdata måste du först $project
nyckelfälten till lämpliga format med datum
operatörer, särskilt $ dateToString
och $month
operatörer.
Detta kan göras i en $project
skede före $group
steg men inte nödvändigt eftersom $grupp
pipeline rymmer mestadels ackumulatorn
operatörer.
I föregående $group
pipeline, kan du gruppera dokumenten efter den formaterade datumnyckeln, aggregera med $avg
operatör och returnera månaden som ett heltal från föregående pipeline med $first
ackumulatoroperatör.
Att köra följande aggregeringspipeline bör ge dig det önskade resultatet:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])