問題がありますが、ここにコード全体を貼り付けることはできないので、説明してみましょう。ID でドキュメントを検索し、その ObjectId の配列要素を入力する必要があります。User コレクションから次のドキュメントがあるとします。
{
_id: 1,
"first_name":"Nick",
"last_name":"Parsons",
"email":"nick@movementstrategy.com",
"password":"foo",
"clients":[
"50f5e901545cf990c500000f",
"50f5e90b545cf990c5000010",
"50f5e90b545cf990c5000013"
]
}
それを見つけた後、次のようにクライアントにデータを入力しています:
User.findById(1)
.populate('clients')
.exec(function (err, user) {
});
上記のコードを実行すると、クライアントの配列が入力された「user」変数が作成されます。しかし、クライアントの順序は次のように間違っています。
{
_id: "50f5e901545cf990c500000f",
"first_name":"cl1",
},
{
_id: "50f5e90b545cf990c5000013",
"first_name":"cl3",
},
{
_id: "50f5e90b545cf990c5000010",
"first_name":"cl2",
}
次のようにする必要があります。
"50f5e901545cf990c500000f",
"50f5e90b545cf990c5000010",
"50f5e90b545cf990c5000013"
それ以外の:
"50f5e901545cf990c500000f",
"50f5e90b545cf990c5000013",
"50f5e90b545cf990c5000010"
誰かが同様の問題を抱えていますか、それとも私は幸運ですか?
編集:コードを追加しました: http://pastie.org/5901177 そのコードでは、3 つのクライアントを作成し、user.clients 配列にプッシュします。その後、user.clients 配列の上にクライアントをもう 1 つ追加しました。だから私がするとき
Client.where('_id').in(user.clients)
順番を間違えています。コンソール経由でこれを見てください。