【问题标题】:Finding words from two properties in a mongodb document从 mongodb 文档中的两个属性中查找单词
【发布时间】:2021-05-22 13:29:39
【问题描述】:

我想从文档中的两个属性(列)“firstname”和“lastname”中查找一个词。下面的代码在从多个属性中查找时没有给出响应。我是 mongo db 的新手,请让我知道我的错误及其可能的解决方案。

router.get('/search/:user', (req, res) => {
  const searchField = new RegExp(req.params.user, 'i');
  User.find({ firstname: { $regex: searchField }, lastname: { $regex: searchField } })
    .then((data) => {
      res.json(data);
    })
    .catch((error) => {
      console.log(error);
    });
});

当我传递一个属性时它正在工作。我怎样才能同时从 'firstname' 和 'lastname' 中找到。

【问题讨论】:

  • 您是要查找包含在任一属性中的单词还是必须同时出现在这两个属性中?
  • 任一属性。 @亚历杭德罗
  • $或者可能是您需要的。 docs.mongodb.com/manual/reference/operator/query/or
  • 是的,你需要的是 $or 操作如下:find({ $or: [ {Query1}, {Query2} ] })

标签: node.js database mongodb express mongoose


【解决方案1】:

Rohit Dalal 的答案是正确的解决方案。

User.find({ $or: [{ firstname: { $regex: searchField } }, { lastname: { $regex: searchField } }] })

这是所需的解决方案。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 我已经编辑了我的答案并包含了解决的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 2019-08-22
  • 2020-07-26
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多