node.js - MongoDB 搜索用户 : filter based on name with regex

标签 node.js regex mongodb mongoose

因此,我想向我的 Web 应用程序添加一个搜索栏,并且希望在我的输入元素中输入名称时显示用户。

我通过创建 mongodb 查询来过滤后端的名称,并在 $regex 中输入用户在前端的输入元素(搜索栏)中输入的字符串。我认为它工作得很好,但现在我的老板说,当他输入他们的名字时,许多用户根本没有出现。我经历了整个过程,它与我在 MongoDb 查询中输入的正则表达式有关。

例如,当我在搜索栏中输入“jonas”时,我希望这会返回带有 full_name 的用户文档。特性值(value)Jonas Rodrigo 。我是否错误地认为我可以像下面那样简单地输入输入元素字符串?如果是这样,我该如何改进?

这就是它的样子:当我输入乔纳斯这个名字时,我希望该用户显示,但不幸的是他没有出现。

enter image description here

这是我的 mongoDB 查询函数:我只需将字符串(在本例中为“jonas”)输入到 $regex 中,但我一定做错了什么,因为它没有返回所需的用户(其他两个条件为真)

const createUserQuery = (user, query) => User.find({
  $and: [
    { full_name: { $regex: query, $options: 'i' } },
    { _workspace: user._workspace },
    { active: true }
  ]
}).select('profile_pic full_name email created_date');

示例 mongodb 用户文档

enter image description here

最佳答案

问题可能出在您的正则表达式查询上。

如果你想搜索所有以Jonas开头的名字

传递给 createUserQueryquery 参数的值应该类似于

^乔纳斯

^ 是此处获取所有以 Joans 开头的名称的关键

关于node.js - MongoDB 搜索用户 : filter based on name with regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007496/

相关文章:

node.js - 为什么 Grunt 不使用 Nodemon 启动我的 Express 服务器?

javascript regexp 不允许我的表达

javascript - 阻止字符串末尾的垂直空格 - 正则表达式

mongodb - 如何使用聚合在一个mongo文档中独立排序多个数组

node.js - 如何使用多个条件更新集合文档

node.js - 将Bootstrap主题添加到具有 Node 依赖性的 Electron 应用程序

node.js - 无法访问docker容器中的服务器

node.js - 使用 Handlebars.js 将一个 html 文件包含到另一个 html 文件中

regex - 零长度正则表达式和无限匹配?

java - Spring Data MongoDB <mongo :auditing/> cause IllegalArgumentException: Unsupported entity Could not determine IsNewStrategy