#mongodb
#mongodb
Вопрос:
Я проверяю условие на основе переменной среды. Моя цель — включить дополнительное поле соответствия на основе переменной среды. В настоящее время я делаю это, что работает, но есть дополнительная ненужная проверка произвольного значения 999.
const filterByCountry = process.env.SITE_NAME == "awesomeDomain"?"299":"999";
а затем в совпадении
$match:{
... some fields...
country: { $not: { $eq: filterByCountry } }, // how to use this line only when filterByCountry=true
},
Это работает, потому что filterByCountry будет иметь значение «299» (просто пример), что мне нужно проверить. Я использовал 999, который даже не существует в моей базе данных, чтобы отменить условие (то же самое, что не иметь всей строки).
Чтобы избежать дополнительной обработки проверки на 999, как я могу перенести условие страны, если я изменю назначение на: const filterByC = process.env.SITE_NAME == "awesomeDomain"//result will be true or false.
$match:{
... some fields...
if (filterByCountry) {
country: { $not: { $eq: filterByCountry } }, // how to use this line only when filterByCountry=true
}
Я добавил условие if выше, чтобы показать, чего я хочу достичь, но это недопустимый синтаксис mongodb.
Ответ №1:
Переданный фильтр $match
также является объектом, который также может быть создан динамически, например,
const filter = {
... some fields ...
}
if (process.env.SITE_NAME == "awesomeDomain") { filter.country = { $ne: 299 }}
и затем
{$match: filter}