как выполнить запрос к коллекции с массивом в mongodb

#mongodb #database #nosql

#mongodb #База данных #nosql

Вопрос:

У меня есть массив с 4 элементами объекта, я хочу выполнить запрос к моей коллекции и вернуть 4 элемента с этим идентификатором uid…

 myArray = > [{uid : 'test'},{uid : 'test2'},{uid : 'test3'},{uid : 'test4'}]

ProductCollection.find({????},(err,result)=>{})
  

ПРИМЕЧАНИЕ: Я не хочу использовать какой-либо цикл

Ответ №1:

Я не хочу использовать какой-либо цикл

Я предположу, что это связано с запросом к базе данных несколько раз, по одному для каждого uid значения.

В любом случае, вы можете зайти в базу данных один раз, чтобы отфильтровать элементы, соответствующие массиву значений, как в вашем случае, используя $in оператор MongoDB.

Но вам пришлось бы отформатировать uid значения в массив самих значений вместо массива объектов, это может быть выполнено простым .map вызовом (не знаю, будете ли вы считать это циклом), чтобы получить значение фильтра в правильном формате.

 var uids = myArray.map((item) => item.uid })
// ['test', 'test2', 'test3', 'test4']
  

И после этого вы можете запросить свою базу данных с помощью этих значений uids

 ProductCollection.find({'uid': {'$in': uids} },(err,result)=>{})
  

(Предполагая, что 'uid' это свойство, которое у вас есть в вашем ProductCollection , по которому вы пытаетесь отфильтровать)