#node.js #mongodb
Вопрос:
как я могу реализовать фильтрацию моего запроса MongoDB, если я не знаю, сколько фильтров я буду использовать в логическом операторе «и».
//Get ads from database
async function getAds() {
return ad = await ads.Ad.find()
.and(//filter using tags variable);
}
интерфейс введет неизвестное количество тегов в массив, называемый тегами, который выглядит следующим образом
"Tags": ["karachi","lahore"]
проблема в том, что я не знаю, сколько элементов будет в переменной тегов, которую мне выдаст интерфейс с помощью параметров запроса. любая помощь будет признательна. Как я могу отдельно записать все эти теги в оператор и, когда я не знаю, сколько их будет в этом массиве.
Ответ №1:
похоже, вам нужно следующее…
async function getAds() {
return ad = await ads.Ad.find({ "Tags": { $in: [ "karachi", "lahore" ] } });
}
Комментарии:
1. Разве это утверждение не действует как логический запрос ИЛИ, а не как И, которое мне нужно в данном случае. Я хочу, чтобы оба этих тега были там, чтобы в запросе отображался не какой-либо один из тегов.
2. Поэтому я думаю, что ответом на этот вопрос является оператор $all, который действует как оператор AND. Спасибо вам за вашу помощь
3. Да, $in-это условие ИЛИ, в то время как $все-это условие И