How to get multiple document using array of MongoDb id?

前端 未结 4 443
广开言路
广开言路 2020-12-08 18:42

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 ?

相关标签:
4条回答
  • 2020-12-08 18:50

    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")
          ]
       }
    });
    
    0 讨论(0)
  • 2020-12-08 18:58

    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")]}});
    
    0 讨论(0)
  • 2020-12-08 19:01

    I believe you are missing the ObjectId. Try this:

    db.feed.find({ 
        _id: {
            $in: [ObjectId("55880c251df42d0466919268"), ObjectId("55bf528e69b70ae79be35006")]
        }
    });
    
    0 讨论(0)
  • 2020-12-08 19:17

    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"]

    0 讨论(0)
提交回复
热议问题