我有一个像这样的mongoID数组
arrayOfIDs = ['mongoID1','mongoID2','mongoID3']
这些是我收藏中文件的mongo-id。
现在,通过获取这些mongoID的数组,即['mongoID1','mongoID2','mongoID3'],我需要使用其_id查询由这些ID指定的每个文档,并处理其数据在我的代码逻辑中是独立的。 为简单起见,我只是“打印”输出即res.json(doc.name)。
如果需要,Mongoose / MongoDB中确实存在
Shop.find({'_id':['mongoID1','mongoID2','mongoID3']})
.exec()
.then(doc =>{
res.json(doc.name)
})
我知道我可以在这种情况下使用循环,
for(id of arrayOfIDs){
Shop.find({'_id': id})
.exec()
.then(doc =>{
res.json(doc.name)
})
}
但这涉及基于arrayOfID的长度多次查询数据库,这是我不想要的。我想有一个本机的mongodb解决方案,就像上面的示例一样,它仅在mongodb查询中传递ID。
您能告诉我如何实现吗?
答案 0 :(得分:1)
您可以使用$in
运算符。
{ _id: { $in: ["mongoID1", "mongoID2", "mongoID3"] } }
如果_id
的类型为ObjectId
,则需要先将它们转换为ObjectId
,然后再通过
{
_id: {
$in: [
mongoose.Types.ObjectId("mongoID1"),
mongoose.Types.ObjectId("mongoID2"),
mongoose.Types.ObjectId("mongoID3"),
],
},
}