我有一个 _ids 数组,我想相应地获取所有文档,最好的方法是什么?
类似...
// doesn't work ... of course ...
model.find({
'_id' : [
'4ed3ede8844f0f351100000c',
'4ed3f117a844e0471100000d',
'4ed3f18132f50c491100000e'
]
}, function(err, docs){
console.log(docs);
});
该数组可能包含数百个 _id。
最佳答案
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 的数组,这种方法也能很好地工作。 (见 Efficiently determine the owner of a record)
我建议任何使用 mongoDB
的人通读 Advanced Queries部分优秀Official mongoDB Docs
关于node.js - mongodb/mongoose findMany - 查找 ID 列在数组中的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303900/
相关文章:
mongodb - 如何在 Node.js 中使用 Mongoose 进行分页?
java - 为什么 MongoDB Java 驱动程序在条件中使用随机数生成器?
node.js - 通过将 useNewUrlParser 设置为 true 来避免 "curren
node.js - 阻止 Mongoose 为子文档数组项创建 _id 属性
mongodb - Redis 比 mongoDB 快多少?
mongodb - 如何将 MongoDB 作为 Windows 服务运行?
node.js - E11000 mongodb mongoose 中的重复键错误索引