Để nhóm tài liệu theo ngày / tháng và trả lại khóa tháng trong đầu ra của bạn, trước tiên bạn cần $project
các trường chính cho các định dạng thích hợp bằng cách sử dụng Ngày
các toán tử, cụ thể là $dateToString
và $month
các toán tử.
Điều này có thể được thực hiện trong $project
giai đoạn trước $group
nhưng không cần thiết vì $group
đường ống chứa hầu hết bộ tích lũy
toán tử.
Trước $group
. avg / # grp._S_avg "> $avg
toán tử và trả về tháng dưới dạng số nguyên từ đường dẫn trước đó bằng cách sử dụng $first
toán tử tích lũy.
Chạy đường dẫn tổng hợp sau sẽ cho bạn kết quả mong muốn:
db.collection.aggregate([
{ "$group": {
"_id": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"average": { "$avg": "$rating" },
"month": { "$first": { "$month": "$ceatedAt" } },
} }
])