node.js - mongodb/mongoose findMany - 查找 ID 列在数组中的

我有一个 _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 中的重复键错误索引

mongodb - 如何更新文档数组中的对象(嵌套更新)

mongodb - 如何重命名 MongoDB 中所有文档的字段?

mongodb - 如何在 MongoDB 中将集合从一个数据库复制到另一个数据库