Монго, найдите список идентификаторов
У меня есть процесс, который возвращает список идентификаторов String MongoDB,
[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]
И я хочу запустить один запрос в Mongo и вернуть соответствующие документы в том же порядке, что и список.
Что такое обозначение оболочки для этого?
Ответы
Ответ 1
После преобразования строк в ObjectIds вы можете использовать оператор $in
, чтобы получить документы в списке. Нет никакого уведомления о запросах, чтобы вернуть документы в порядке вашего списка, но см. здесь для некоторых способов справиться с этим.
var ids = ['512d5793abb900bf3e20d012', '512d5793abb900bf3e20d011'];
var obj_ids = ids.map(function(id) { return ObjectId(id); });
db.test.find({_id: {$in: obj_ids}});
Ответ 2
Если конечная цель состоит в том, чтобы получить документ с порядком по вашему списку pre-get ids, вы можете просто преобразовать результат запроса в сопоставление (id as key, doc as value), а затем пройти список идентификаторов, чтобы получить документ.