Chcete-li seskupit dokumenty podle dne/měsíce a vrátit klíč měsíce ve výstupu, musíte nejprve $project
klíčová pole do příslušných formátů pomocí Datum
operátory, zejména $dateToString
a $month
operátory.
To lze provést v $project
etapa před $group
krok, ale není to nutné, protože $group
potrubí pojme většinou akumulátor
operátory.
V předchozím $group
kanálu, můžete seskupit dokumenty podle formátovaného klíče data, agregovat pomocí $avg
operátor a vrátí měsíc jako celé číslo z předchozího kanálu pomocí $first
operátor akumulátoru.
Spuštění následujícího agregačního kanálu by vám mělo poskytnout požadovaný výsledek:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])