猫鼬中的 $or 运算符

时间:2021-06-30 11:49:10

标签: node.js mongoose

我在 mongoose 中使用 $or 运算符来搜索数据库的 namedescription 字段。我想检查 queryWord 字符串是否包含数据库字段的任何部分。这是我正在使用的代码:

const query = {
$or: [
  { name: `/${body.queryWord}/i` },
  { description: { $regex: `/${body.queryWord}/i` } },
 ],
};

Food.find(query, (err, data) => {
 if (err) {
  res.status(500).send(err);
 } else {
  res.status(200).send(data);
 }
});

但它只返回一个空数组!

非常感谢任何帮助!
谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题是因为您将正则表达式包裹在 `` 中,它被理解为字符串。你可以试试这个方法:

const queryWordRegex = new RegExp(body.queryWord, "i");
const query = {
$or: [
  { name: { $regex: queryWordRegex  } },
  { description: { $regex: queryWordRegex  } },
 ],
};