蒙戈,通过身份列表找出来

我有一个进程,它返回一个 String MongoDB id 列表,

[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]

我想对 Mongo 发出一个查询,然后按照与列表相同的顺序返回匹配的文档。

这样做的 shell 符号是什么?

84205 次浏览

如果您的最终目的是通过预先获取的 id 列表获取具有顺序的文档,那么只需将查询结果转换为映射(id 作为键,doc 作为值) ,然后遍历 id 列表获取 doc。

将字符串转换为 ObjectID 之后,可以使用 $in操作符获取列表中的文档。没有任何查询符号来按照列表的顺序返回文档,但是请参阅 给你以获得处理该问题的一些方法。

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

//typeyId 逗号在请求中分隔“5c875c27d131b755d7abed86,5 c875b0ad131b755d7abed81”

var ids= req.body.categoryId.split(',');


db.test.find({ categoryId: { $in: ids } });

这对我在机器人3T 的工作很好。不需要创建任何对象,只需使用 id 列表即可。

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