如何使用MongoDb id数组获取多个文档?

时间:2015-08-28 05:56:27

标签: mongodb

我有一系列ID,我想立即获取所有文档。为此,我正在写作,但它返回0条记录。

如何使用多个ID进行搜索?

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

我可以通过传递单个ID来获取记录,如

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

5 个答案:

答案 0 :(得分:22)

MongoDB是类型敏感的,这意味着1'1'不同,"55880c251df42d0466919268"ObjectId("55880c251df42d0466919268")也是如此。后者是ObjectID类型但不是str,也是MongoDB文档的默认_id类型。

您可以找到有关ObjectID here的更多信息。

试试吧:

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

答案 1 :(得分:15)

我相信你错过了ObjectId。试试这个:

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

答案 2 :(得分:2)

为了查找您必须使用的多个文件的记录" $ in"操作者 虽然您的查询很好,但您只需在为ID搜索数据时添加ObjectId

{{1}}

答案 3 :(得分:0)

我已经使用过,并且工作正常:

module.exports.obtenerIncidencias386RangoDias =函数(empresas,回调){

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

};

其中:

empresas = [“ 5ccc642f9e789820146e9cb0”,“ 5ccc642f9e789820146e9bb9”]

答案 4 :(得分:-1)

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