Mongo,通过ID列表查找

时间:2013-02-27 01:18:54

标签: mongodb

我有一个返回String MongoDB ID列表的进程,

[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]

我想向Mongo发出一个查询,并以与列表相同的顺序返回匹配的文档。

执行此操作的shell表示法是什么?

3 个答案:

答案 0 :(得分:85)

将字符串转换为ObjectIds后,您可以使用$in运算符来获取列表中的文档。没有任何查询符号可以按照列表的顺序恢复文档,但请参阅here以了解处理该文档的方法。

var ids = ['512d5793abb900bf3e20d012', '512d5793abb900bf3e20d011'];
var obj_ids = ids.map(function(id) { return ObjectId(id); });
db.test.find({_id: {$in: obj_ids}});

答案 1 :(得分:1)

这对于Robo 3T来说对我来说很好。无需创建任何对象,只需使用ID列表即可。

db.getCollection('my_collection').find({'_id':{$in:['aa37ba96']}})

答案 2 :(得分:0)

如果您的最终目的是通过pre-get id列表获取包含订单的文档,则可以将查询结果转换为映射(id为key,doc为value),然后遍历id列表以获取文档。