Tôi có ba tài liệu:Sắp xếp phụ mảng trong một quả tổng hợp
{
"id_user": "t57092501745ad6285ac58c22",
"name": "Day #1",
"date": {
"$date": "2016-04-21T20:50:00.190Z"
},
"text": "My text"
}
{
"id_user": "t57092501745ad6285ac58c22",
"name": "Day #2",
"date": {
"$date": "2016-04-22T20:50:00.190Z"
},
"text": "My text"
}
{
"id_user": "t57092501745ad6285ac58c22",
"name": "Day #3",
"date": {
"$date": "2016-04-22T20:51:00.190Z"
},
"text": "My text"
}
và tôi cần phải nhóm những cho ngày, vì vậy tôi làm:
{
"$match": {
"id_user": "t57092501745ad6285ac58c22"
}
}, {
"$sort": {
"date": -1
}
}, {
"$group": {
"_id": {
$dayOfYear: "$date"
},
"data": {
"$push": {
"id_user": "$id_user",
"name": "$name",
"date": "$date",
"text": "$text"
},
},
}
}
và kết quả là:
{
{
_id: 113,
data: [{
"id_user": "t57092501745ad6285ac58c22",
name: "Day #1",
date: "2016-04-22T20:51:00.190Z",
text: "My text"
}]
}, {
_id: 114,
data: [{
"id_user": "t57092501745ad6285ac58c22",
name: "Day #3",
date: "2016-04-23T20:51:00.190Z",
text: "My text"
}, {
"id_user": "t57092501745ad6285ac58c22",
name: "Day #2",
date: "2016-04-23T20:50:00.190Z",
text: "My text"
}]
}
}
và không sao, nhưng đơn đặt hàng không phải là thứ tôi cần:
{ Day #1 }, { Day #3, Day #2 }
nếu tôi thay đổi sort
để { "date": 1 }
tôi có thể đảo ngược thứ tự của 2 nhóm, theo cách này:
{ Day #3, Day #2 }, { Day #1 }
nhưng tôi không biết làm thế nào tho thay đổi cũng trật tự bên trong tiểu mảng, để có được chính xác:
{ Day #1 }, { Day #2, Day #3 }
Cách chính xác là gì?
Bạn được sắp xếp trong "giảm dần" theo thứ tự. Sắp xếp "tăng dần" thay vì: '{" $ sort ": {" date ": 1}}' –
Không, như tôi nói điều này không có tác dụng, vui lòng đọc câu hỏi của tôi. –
Có, hãy suy nghĩ một chút. Bạn '$ sort' trước khi bạn thêm vào mảng, vì vậy' $ push' sẽ tôn trọng thứ tự khám phá từ '$ sort' và" phần tử mảng "sẽ được sắp xếp theo cách đó (với thứ tự' $ sort' được sửa '$ Group' không ** không ** Vì vậy nếu bạn muốn" tài liệu "được phát ra theo thứ tự thì bạn cần ** một' 'sort'' khác làm giai đoạn cuối cùng (cũng tăng dần). {{ "$ sort": {"_id": 1}} 'Nhìn kỹ, ngày # 3 là ngày" muộn hơn "ngày thứ 2. Vì vậy, bạn có thứ tự sai, và không lưu ý rằng' $ group' không –