我有一个进程,它返回一个 String MongoDB id 列表,
[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]
我想对 Mongo 发出一个查询,然后按照与列表相同的顺序返回匹配的文档。
这样做的 shell 符号是什么?
如果您的最终目的是通过预先获取的 id 列表获取具有顺序的文档,那么只需将查询结果转换为映射(id 作为键,doc 作为值) ,然后遍历 id 列表获取 doc。
将字符串转换为 ObjectID 之后,可以使用 $in操作符获取列表中的文档。没有任何查询符号来按照列表的顺序返回文档,但是请参阅 给你以获得处理该问题的一些方法。
$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']}})