Существует поиск, который отлично работает для одного столбца, и я хочу, чтобы он проверял введенную строку в двух (более) столбцах.
Вот как это работает для одного:
if (req.query.name) {
aggregateOptions.push({ $match: { name: { $regex: req.query.name, $options: 'i' } } });
}
, поэтому он проверяет, присутствует ли введенная строка / подстрока в столбце name , и отфильтровывает столбцы, в которых его нет.
Я хочу добавить это также для город столбец. Таким образом, он проверяет, присутствует ли введенная строка в одном из столбцов name или city , это не обязательно должно быть в обоих, только в одном это нормально.
Итак, я использовал $or
для этого:
if (req.query.name) {
aggregateOptions.push({
$or: [
{ $match: { name: { $regex: req.query.name, $options: 'i' } } },
{ $match: { city: { $regex: req.query.city, $options: 'i' } } },
],
});
}
Это кажется неправильным, потому что он ничего не фильтрует, когда строка вводится в поле поиска и возвращает ошибку 400 и "$or is not allowed in this atlas tier"
.
Как это решить?