#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
, по которому вы пытаетесь отфильтровать)