How to get multiple document using array of MongoDb id?

Mongodb

Mongodb Problem Overview


I have an array of ids and I want to get all document of them at once. For that I am writing but it return 0 records.

How can I search using multiple Ids ?

db.getCollection('feed').find({"_id" : { "$in" : [  
"55880c251df42d0466919268","55bf528e69b70ae79be35006" ]}})

I am able to get records by passing single id like

db.getCollection('feed').find({"_id":ObjectId("55880c251df42d0466919268")})

Mongodb Solutions


Solution 1 - Mongodb

MongoDB is type sensitive, which means 1 is different with '1', so are "55880c251df42d0466919268" and ObjectId("55880c251df42d0466919268"). The later one is in ObjectID type but not str, and also is the default _id type of MongoDB document.

You can find more information about ObjectID here.

Just try:

db.getCollection('feed').find({"_id" : {"$in" : [ObjectId("55880c251df42d0466919268"), ObjectId("55bf528e69b70ae79be35006")]}});

Solution 2 - Mongodb

I believe you are missing the ObjectId. Try this:

db.feed.find({ 
    _id: {
        $in: [ObjectId("55880c251df42d0466919268"), ObjectId("55bf528e69b70ae79be35006")]
    }
});

Solution 3 - Mongodb

For finding records of multiple documents you have to use "$in" operator Although your query is fine, you just need to add ObjectId while finding data for Ids

db.feed.find({
  "_id" : {
    "$in" : 
      [ObjectId("55880c251df42d0466919268"), 
       ObjectId("55bf528e69b70ae79be35006")
      ]
   }
});

Solution 4 - Mongodb

Just I have use it, and is working fine:

module.exports.obtenerIncidencias386RangoDias = function (empresas, callback) {
	let arraySuc_Ids = empresas.map((empresa)=>empresa.sucursal_id)
			incidenciasModel.find({'sucursal_id':{$in:arraySuc_Ids}
			}).sort({created_at: 'desc'}).then(
				(resp)=>	{
					callback(resp)}
			)
};

where:

empresas = ["5ccc642f9e789820146e9cb0","5ccc642f9e789820146e9bb9"]

Solution 5 - Mongodb

store array list in var and pass that array list to find function var list=db.collection_name.find() db.collection_name.find({_id:{$in:list}})

Solution 6 - Mongodb

The Id's need to be in this format : ObjectId("id").
you can use this to transform your string ID's :

const ObjectId = require('mongodb').ObjectId;

Solution 7 - Mongodb

db.getCollection({your_collection_name}).find({
    "_id" : {
    "$in" : 
      [({value1}), 
       ({value2})
      ]
   } 
    })

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPankajView Question on Stackoverflow
Solution 1 - MongodbKane BlueriverView Answer on Stackoverflow
Solution 2 - MongodbVimalraj SelvamView Answer on Stackoverflow
Solution 3 - MongodbVIKAS KOHLIView Answer on Stackoverflow
Solution 4 - Mongodbifredy3View Answer on Stackoverflow
Solution 5 - MongodbshashiguraView Answer on Stackoverflow
Solution 6 - MongodbklimqxView Answer on Stackoverflow
Solution 7 - MongodbishantrajView Answer on Stackoverflow