我有一个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
,这就是为什么我觉得我需要为这个外部集合。