ご希望の順序で保存します。または、クライアント側で取り出した後にソートします。
> 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"}}}
]);
生成します:それらのどちらも可能性がある場合は
、あなたはaggregation frameworkを使用することができます
{
"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
}
あなたの '' answers.name ''キーの周りに引用符が必要です。しかし、私はあなたのコードが彼が探しているものをやっているとは思わない... –
あなたの例では、 '_id'フィールドと' name'配列を持つすべてのドキュメントを、各配列の最初の名前でソートしてリストします。 'sort()'はドキュメントレベルで動作し、ドキュメント内の配列を並べ替えません。 – Stennie