因此,我想向我的 Web 应用程序添加一个搜索栏,并且希望在我的输入元素中输入名称时显示用户。
我通过创建 mongodb 查询来过滤后端的名称,并在 $regex 中输入用户在前端的输入元素(搜索栏)中输入的字符串。我认为它工作得很好,但现在我的老板说,当他输入他们的名字时,许多用户根本没有出现。我经历了整个过程,它与我在 MongoDb 查询中输入的正则表达式有关。
例如,当我在搜索栏中输入“jonas”时,我希望这会返回带有 full_name
的用户文档。特性值(value)Jonas Rodrigo
。我是否错误地认为我可以像下面那样简单地输入输入元素字符串?如果是这样,我该如何改进?
这就是它的样子:当我输入乔纳斯这个名字时,我希望该用户显示,但不幸的是他没有出现。
这是我的 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 用户文档
最佳答案
问题可能出在您的正则表达式查询上。
如果你想搜索所有以Jonas
开头的名字
传递给 createUserQuery
的 query
参数的值应该类似于
^乔纳斯
^
是此处获取所有以 Joans
开头的名称的关键
关于node.js - MongoDB 搜索用户 : filter based on name with regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007496/