Подтвердить что ты не робот

Монго, найдите список идентификаторов

У меня есть процесс, который возвращает список идентификаторов String MongoDB,

[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]

И я хочу запустить один запрос в Mongo и вернуть соответствующие документы в том же порядке, что и список.

Что такое обозначение оболочки для этого?

4b9b3361

Ответ 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), а затем пройти список идентификаторов, чтобы получить документ.