mongodb/mongoose findMany - 查找数组中列出的所有文档的ID。
mongodb/mongoose findMany - 查找数组中列出的所有文档的ID。
我有一个包含 _id 的数组,我想相应地获取所有文档,最好的方法是什么?
类似于...
// doesn't work ... of course ... model.find({ '_id' : [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e' ] }, function(err, docs){ console.log(docs); });
数组可能包含成百上千个 _id。
admin 更改状态以发布 2023年5月22日
Ids是对象id的数组:
const ids = [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e', ];
使用Mongoose回调函数:
Model.find().where('_id').in(ids).exec((err, records) => {});
使用异步函数的Mongoose:
const records = await Model.find().where('_id').in(ids).exec();
更加简洁:
const records = await Model.find({ '_id': { $in: ids } });
不要忘记使用实际模型替换Model。
mongoose
中的find
函数是对mongoDB的完整查询。这意味着您可以使用方便的mongoDB$in
子句,它的功能就像同名的SQL版本一样。
model.find({ '_id': { $in: [ mongoose.Types.ObjectId('4ed3ede8844f0f351100000c'), mongoose.Types.ObjectId('4ed3f117a844e0471100000d'), mongoose.Types.ObjectId('4ed3f18132f50c491100000e') ]} }, function(err, docs){ console.log(docs); });
即使是包含成千上万个ID的数组,这个方法也能很好地工作。 (请参阅高效地确定一条记录的所有者)
我建议任何使用mongoDB
的人都应该阅读优秀的官方mongoDB文档中的高级查询部分。