Tôi sẽ lưu trữ theo thứ tự bạn muốn trả lại. Hoặc sắp xếp nó sau khi bạn kéo nó ra, ở phía khách hàng.
Nếu không những có thể xảy ra, bạn có thể sử dụng aggregation framework:
> db.test.insert({answers: [
... {name: 'paul', state: 'RU'},
... {name: 'steve', state: 'US'},
... {name: 'mike', state: 'DE'}]});
> db.test.insert({answers: [
... {name: 'paul', state: 'RU'},
... {name: 'steve', state: 'US'},
... {name: 'xavier', state: 'TX'}]});
db.test.aggregate([
{$unwind: "$answers"},
{$sort: {"answers.name":1}},
{$group: {_id:"$_id", answers: {$push:"$answers"}}}
]);
sản xuất:
{
"result" : [
{
"_id" : ObjectId("5053b2477d820880c3469364"),
"answers" : [
{
"name" : "paul",
"state" : "RU"
},
{
"name" : "steve",
"state" : "US"
},
{
"name" : "xavier",
"state" : "TX"
}
]
},
{
"_id" : ObjectId("5053af9f7d820880c3469363"),
"answers" : [
{
"name" : "mike",
"state" : "DE"
},
{
"name" : "paul",
"state" : "RU"
},
{
"name" : "steve",
"state" : "US"
}
]
}
],
"ok" : 1
}
Nguồn
2012-09-14 22:42:19
Bạn cần dấu ngoặc kép quanh các phím '" answers.name "'. Nhưng tôi không nghĩ rằng mã của bạn làm những gì anh ta đang tìm kiếm ... –
Ví dụ của bạn sẽ liệt kê tất cả các tài liệu với trường '_id' và' name', được sắp xếp theo tên đầu tiên trong mỗi mảng. 'Sort()' hoạt động ở cấp tài liệu và không sắp xếp lại các mảng trong các tài liệu. – Stennie