mongodb/mongoose findMany - 查找数组中列出的所有文档的ID。

43 浏览
0 Comments

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日
0
0 Comments

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。

0
0 Comments

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文档中的高级查询部分。

0