我有一個MongoDB數據庫和2個集合:programs
和exercises
。裏面programs
集文檔有一個包含ID的字符串表示的exercises
場exercises
表,這樣的:有沒有辦法在一個查詢中使用MongoDB將_id的數組映射到文檔中?
{
"_id" : ObjectId("57da8f955cf29df682932ee9"),
"exercises" : [
"57da8e01d0649e646afaea4e",
"57da8e01d0649e646afaea4e",
"57da8e01d0649e646afaea4e"
]
}
我需要這個陣列的ID映射到相關exercises
對象數組。事情是,我需要按照精確的順序,包括重複。就像在之前的文檔中一樣,它包含3個指向相同的exercise
的鏈接,我需要獲得3個相同的exercise
作爲響應。
現在我使用此查詢:
db.collection("exercises").find({_id: {$in: exercises.map(exid => ObjectID(exid)) }}).toArray()
該查詢返回的每exercise
我的需要,但在錯誤的秩序,沒有重複。
我可以使用MongoDB在一個查詢中實現這樣的結果嗎?我知道我可以做這樣的事情(沒有測試,只是作爲一個例子):
exercises.map(exid => db.collection("exercises").find({id: ObjectID(exid)});
像這樣的東西應該給我的陣列我需要的,但我想這是不正確的方式做它,做一個單獨的查詢得到一個特定的exercise
。
P.S.我知道我可以存儲exercises
文檔本身,不使用外部exercises
集合爲,但事情是,一些program
S可指同一exercise
,這就是爲什麼我覺得我需要爲這個外部集合。