mongodb/mongoose findMany - find all documents with IDs listed in array mongodb/mongoose findMany - find all documents with IDs listed in array mongoose mongoose

mongodb/mongoose findMany - find all documents with IDs listed in array


The find function in mongoose is a full query to mongoDB. This means you can use the handy mongoDB $in clause, which works just like the SQL version of the same.

model.find({    '_id': { $in: [        mongoose.Types.ObjectId('4ed3ede8844f0f351100000c'),        mongoose.Types.ObjectId('4ed3f117a844e0471100000d'),         mongoose.Types.ObjectId('4ed3f18132f50c491100000e')    ]}}, function(err, docs){     console.log(docs);});

This method will work well even for arrays containing tens of thousands of ids. (See Efficiently determine the owner of a record)

I would recommend that anybody working with mongoDB read through the Advanced Queries section of the excellent Official mongoDB Docs


Ids is the array of object ids:

const ids =  [    '4ed3ede8844f0f351100000c',    '4ed3f117a844e0471100000d',     '4ed3f18132f50c491100000e',];

Using Mongoose with callback:

Model.find().where('_id').in(ids).exec((err, records) => {});

Using Mongoose with async function:

const records = await Model.find().where('_id').in(ids).exec();

Or more concise:

const records = await Model.find({ '_id': { $in: ids } });

Don't forget to change Model with your actual model.


Combining Daniel's and snnsnn's answers:

let ids = ['id1','id2','id3']let data = await MyModel.find(  {'_id': { $in: ids}});