如何使用类似于SQL的LIKE运算符使用查询猫鼬?

时间:2020-09-07 01:10:24

标签: javascript mongodb express mongoose

我正在尝试查询数据库以根据名称和类别搜索产品。我希望数据库在用户搜索某些内容时返回一个产品数组,此字符串应与procut的类别或类型或名称匹配。我正在做以下

Product.find(
    {
      $or: [
        {
          name: /box/,
          type: /box/,},
          ],
        },
        function (err, results) {
          console.log(err);
          console.log(results);
        }
      );

我无法在以下位置使用变量框:

名称:/ box /

我尝试了“ /” + box +“ /”,并在创建变量时将其放入//中,但没有一个起作用。

如何使用like运算符查询我的数据库。

3 个答案:

答案 0 :(得分:1)

似乎$or运算符语法中也有错误。每个表达式应放在单独的大括号中。另外,由于您使用的是猫鼬,因此可以如下使用正则表达式。 $ option用于使搜索不区分大小写。

Product.find(
  {
    $or: [
      {
        name: { $regex: "box", $options: "i" },
      },
      { type: { $regex: "box", $options: "i" } },
    ],
  },
  function (err, results) {
    console.log(err);
    console.log(results);
  }
);

答案 1 :(得分:0)

使用RegExp构造函数

key: new RegExp(box),

Read More about RegExp

答案 2 :(得分:0)

我认为您正在尝试使用$ or运算符。语法如下:

Product.find(
    {
      $or: [
        {name: /box/},
        {type: /box/}
      ]
    });