我有一个_ids数组,我想相应地获取所有文档,最好的方法是什么?
就像是 ...
// doesn't work ... of course ... model.find({ '_id' : [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e' ] }, function(err, docs){ console.log(docs); });
该数组可能包含数百个_id.
find
mongoose中的函数是对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文档的高级查询部分
使用此格式的查询
let arr = _categories.map(ele => new mongoose.Types.ObjectId(ele.id)); Item.find({ vendorId: mongoose.Types.ObjectId(_vendorId) , status:'Active'}) .where('category') .in(arr) .exec();