За да групирате документи по ден/месец и да върнете ключа за месеца във вашия изход, трябва първо да $project
ключовите полета в подходящи формати с помощта на Дата
оператори, по-специално $ dateToString
и $month
оператори.
Това може да се направи в $проект
етап преди $group
стъпка, но не е необходимо, тъй като $group
тръбопроводът побира предимно акумулатора
оператори.
В предходния $groupкод>
тръбопровод, можете да групирате документите по форматирания ключ за дата, да обобщите с помощта на $avg
оператор и връща месеца като цяло число от предишния конвейер с помощта на $first
акумулаторен оператор.
Изпълнението на следния конвейер за агрегиране трябва да ви даде желания резултат:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])