5
我有三個文件:排序子陣列
{
"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"
}
,我需要爲天團這些,所以我做的:
{
"$match": {
"id_user": "t57092501745ad6285ac58c22"
}
}, {
"$sort": {
"date": -1
}
}, {
"$group": {
"_id": {
$dayOfYear: "$date"
},
"data": {
"$push": {
"id_user": "$id_user",
"name": "$name",
"date": "$date",
"text": "$text"
},
},
}
}
,其結果是:
{
{
_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"
}]
}
}
和它的確定,但秩序是不是我所需要:
{ Day #1 }, { Day #3, Day #2 }
如果我改變sort
到{ "date": 1 }
我可以顛倒2組的順序,這樣一來:
{ Day #3, Day #2 }, { Day #1 }
,但我不知道該怎麼壽變化也子陣列內的順序,獲得正確的:
{ Day #1 }, { Day #2, Day #3 }
什麼是正確的方法?
您在「降序」排序。按照升序排序:'{「$ sort」:{「date」:1}}' –
不,如我所說這不起作用,請閱讀我的問題。 –
是的,請考慮一下。在添加到數組之前,您需要'$ sort',所以'$ push'將遵循'$ sort'中發現的順序,並且「數組元素」將按照這種方式進行排序(使用「$ sort」順序。'$ group'確實沒有**,所以如果你想要發出的「文檔」按順序排列,那麼你需要另一個**'$ sort'作爲最後一個管道階段(也是升序)。'{ 「$ sort」:{「_id」:1}}'仔細看,第三天比第二天晚,因此你的訂單錯了,沒有注意到'$ group'沒有排列順序排列 –