#javascript #mongodb #express #mongoose
#javascript #mongodb #выражать #мангуст #экспресс #mongoose
Вопрос:
Я пытаюсь запросить свою базу данных для поиска продуктов на основе названия и категории. Я хочу, чтобы база данных возвращала массив продуктов, когда пользователь выполняет поиск чего-либо, эта строка должна соответствовать либо категории обработки, либо типу, либо имени. Я делаю следующее
Product.find(
{
$or: [
{
name: /box/,
type: /box/,},
],
},
function (err, results) {
console.log(err);
console.log(results);
}
);
Я не могу использовать свой переменный блок в:
имя: /box/
Я пробовал «/» box «/» и помещал свою переменную в // при ее создании, но ничего из этого не работает.
Как мне использовать оператор like для запроса моей базы данных?
Комментарии:
1.Вы можете определить переменную следующим образом:
const boxVar = /box/
и использовать переменную в запросе как,name: boxVar,
.
Ответ №1:
Похоже, что в $or
синтаксисе оператора также есть ошибка. Каждое выражение должно содержать отдельные фигурные скобки. Также, поскольку вы используете mongoose, вы можете использовать регулярное выражение, как показано ниже. Параметр $ используется для того, чтобы сделать поиск нечувствительным к регистру.
Product.find(
{
$or: [
{
name: { $regex: "box", $options: "i" },
},
{ type: { $regex: "box", $options: "i" } },
],
},
function (err, results) {
console.log(err);
console.log(results);
}
);
Ответ №2:
Ответ №3:
Я думаю, что вы пытаетесь сделать, это использовать оператор $or . Синтаксис такой:
Product.find(
{
$or: [
{name: /box/},
{type: /box/}
]
});