Tôi thấy vấn đề. Mọi người đang tìm kiếm và tìm thấy câu trả lời của stackoverflow này:
Sai rồi, vì nó không bao giờ "tái cấu trúc" mảng.
Bạn thực hiện điều đó với $ group
và $ push
và vì bạn đang nhóm, bạn sẽ muốn có $ first
cho các trường khác trong tài liệu bạn muốn:
db.TrafficStatistic.aggregate([
{ "$unwind": "$statistic" },
{ "$sort": { "_id": 1, "statistic.data.desktop.users": 1 } },
{ "$group": {
"_id": "$_id",
"monthStart" : { "$first": "$monthStart" },
"monthEnd" : { "$first": "$monthEnd" },
"date" : { "$first": "$date" },
"statistic": { "$push": "$statistic" }
}}
])
Cũng lưu ý $ sort
được áp dụng cho cả "_id"
và trường khác để sắp xếp. Điều này để phân loại được áp dụng cho mỗi tài liệu và rất quan trọng khi các chi tiết tài liệu được đặt lại với nhau trong $ group
.
Bây giờ tài liệu trông giống như nó đã làm, nhưng lần này các thành viên mảng được sắp xếp.