我有一个返回String MongoDB ID列表的进程,
[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]
我想向Mongo发出一个查询,并以与列表相同的顺序返回匹配的文档。
执行此操作的shell表示法是什么?
答案 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列表以获取文档。