For at gruppere dokumenter efter dag/måned og returnere månedsnøglen i dit output, skal du først $projekt
nøglefelterne til passende formater ved hjælp af datoen
operatører, især $ dateToString
og $month
operatører.
Dette kan gøres i en $projekt
fase forud for $group
trin, men ikke nødvendigt, da $gruppe
pipeline rummer for det meste akkumulatoren
operatører.
I den foregående $group
pipeline, kan du gruppere dokumenterne efter den formaterede datonøgle, samle ved hjælp af $avg
operatør og returner måneden som et heltal fra den forrige pipeline ved hjælp af $first
akkumulatoroperatør.
Kørsel af følgende aggregeringspipeline skulle give dig det ønskede resultat:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])