如何使用 MongoDb id 数组获取多个文档?

我有一个 id 数组,我想一次获得它们的所有文档。为此,我写,但它返回0记录。

如何使用多个 ID 进行搜索?

db.getCollection('feed').find({"_id" : { "$in" : [
"55880c251df42d0466919268","55bf528e69b70ae79be35006" ]}})

我可以通过传递单个 id like 来获取记录

db.getCollection('feed').find({"_id":ObjectId("55880c251df42d0466919268")})
92616 次浏览

我相信你错过了 ObjectId。试试这个:

db.feed.find({
_id: {
$in: [ObjectId("55880c251df42d0466919268"), ObjectId("55bf528e69b70ae79be35006")]
}
});

MongoDB 是类型敏感的,这意味着 1'1'不同,"55880c251df42d0466919268"ObjectId("55880c251df42d0466919268")也不同。后者是 ObjectID 类型,但不是 str,也是 MongoDB 文档的默认 _id类型。

您可以找到有关 ObjectID给你的更多信息。

试试看:

db.getCollection('feed').find({"_id" : {"$in" : [ObjectId("55880c251df42d0466919268"), ObjectId("55bf528e69b70ae79be35006")]}});

要查找多个文档的记录,必须使用“ $in”操作符 虽然查询没有问题,但是您只需在查找 ID 数据时添加 ObjectId 即可

db.feed.find({
"_id" : {
"$in" :
[ObjectId("55880c251df42d0466919268"),
ObjectId("55bf528e69b70ae79be35006")
]
}
});

只是我已经用过了,而且工作得很好:

module.exports.obtenerIncidencias386RangoDias = function (empresas, callback) {
let arraySuc_Ids = empresas.map((empresa)=>empresa.sucursal_id)
incidenciasModel.find({'sucursal_id':{$in:arraySuc_Ids}
}).sort({created_at: 'desc'}).then(
(resp)=>    {
callback(resp)}
)
};

地点:

empresas = ["5ccc642f9e789820146e9cb0","5ccc642f9e789820146e9bb9"]

db.getCollection({your_collection_name}).find({
"_id" : {
"$in" :
[({value1}),
({value2})
]
}
})

将数组列表存储在 var 中,并将该数组列表传递给 find 函数 Var list = db.Collection _ name. find () Collection _ name. find ({ _ id: { $in: list }})

Id 需要采用以下格式: ObjectId("id")
您可以使用它来转换字符串 ID: < br/>

const ObjectId = require('mongodb').ObjectId;