私はそれの中にMongoDBデータベースと2つのコレクション:programs
とexercises
を持っています。 programs
コレクション内のドキュメントは、そのように、exercises
テーブル内のIDの文字列表現が含まれているexercises
フィールドを持っている:MongoDBを使用して_idの配列を1つのクエリでドキュメントにマップする方法はありますか?
{
"_id" : ObjectId("57da8f955cf29df682932ee9"),
"exercises" : [
"57da8e01d0649e646afaea4e",
"57da8e01d0649e646afaea4e",
"57da8e01d0649e646afaea4e"
]
}
私は、関連exercises
オブジェクトの配列にIDのこの配列をマッピングする必要があります。物事は、私は正確な順序で必要と重複を含む。前のドキュメントと同様に、同じexercise
への3つのリンクが含まれており、私は3つの同じexercise
の配列を返す必要があります。
今、私はこのクエリを使用しています:
db.collection("exercises").find({_id: {$in: exercises.map(exid => ObjectID(exid)) }}).toArray()
このクエリは、私が必要とするすべてのexercise
を返しますが、間違った順序で、重複なし。
MongoDBを使用して1つのクエリでこのような結果を達成できますか?このような
exercises.map(exid => db.collection("exercises").find({id: ObjectID(exid)});
何かは私が必要とする配列を与える必要がありますが、私は、これは正しい方法ではないと思います。私は(単なる一例として、それをテストしていない)私はそのような何かを行うことができますことを知っています個別のクエリを作成して特定のexercise
を取得します。
P.S.私はexercises
を文書そのものに格納することができますが、外部のexercises
コレクションは使用していませんが、program
のものはexercise
を参照している可能性があります。