![](/img/trans.png)
[英]How to sort array of objects based on object property (which is Array) Javascript
[英]How to sort objects inside an array which is stored in an object
我創建了一個名為“對話”的集合,其文檔之一如下。
{
"_id" : ObjectId("5535fb3172163e5f1561daa7"),
"messages" : [
{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb3172163e5f1561daa8"),
"created" : ISODate("2015-04-21T07:24:33.495Z"),
"read" : false,
"message" : "second first message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
},
{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb6472163e5f1561daa9"),
"created" : ISODate("2015-04-21T07:25:24.349Z"),
"read" : false,
"message" : "second second message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
},
{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb8272163e5f1561daaa"),
"created" : ISODate("2015-04-21T07:25:54.190Z"),
"read" : false,
"message" : "second third message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
}
],
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
],
"__v" : 2
}
現在,我必須根據對象的'created'屬性對messages數組內的對象進行排序。 我使用了以下代碼。
1. db.conversations.aggregate({$sort: {'messages.message' : -1}}).pretty()
2. db.conversations.find({_id :ObjectId('5536023d33e52be617b8bb27')}).sort({"messages.created":1}).pretty()
但是這些都不給我正確的結果。 請幫助我獲得想要的結果。 謝謝
您可以使用Mongodb Aggregation框架
db.conversations.aggregate([{
'$match':{
'_id' :ObjectId("5536023d33e52be617b8bb27")}
},
{'$unwind': '$messages'},
{'$sort': { 'messages.created' : -1 }}
])
結果:-
{
result:[
{
'_id' :ObjectId("5536023d33e52be617b8bb27"),
'messages' :{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb8272163e5f1561daaa"),
"created" : ISODate("2015-04-21T07:25:54.190Z"),
"read" : false,
"message" : "second third message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
},
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
],
"__v" : 2
}
{
'_id' :ObjectId("5536023d33e52be617b8bb27"),
'messages' :{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb6472163e5f1561daa9"),
"created" : ISODate("2015-04-21T07:25:24.349Z"),
"read" : false,
"message" : "second second message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
},
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
],
"__v" : 2
},
{
'_id' :ObjectId("5536023d33e52be617b8bb27"),
'messages' :{
"from" : ObjectId("5534b2992a104ed914435c31"),
"_id" : ObjectId("5535fb3172163e5f1561daa8"),
"created" : ISODate("2015-04-21T07:24:33.495Z"),
"read" : false,
"message" : "second first message",
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
]
},
"participants" : [
ObjectId("5534b2992a104ed914435c31"),
ObjectId("5530af38576214dd3553331c")
],
"__v" : 2
},
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.