regex - 使用正则表达式在 mongodb 中搜索查询

标签 regex node.js mongodb mongoose

我正在构建一个网站,使用nodejs、expressjs、mongodb、mongoose、body-parser等。

基本上我创建了一个搜索功能,您可以在其中搜索用户,基本上它可以工作,但问题是,它区分大小写,我想使用不区分大小写的方式搜索用户。

我在堆栈溢出中找到了一个解决方案,并在我的 mongo shell 上尝试了它。这是命令

    db.loginusers.find({
    $or: 
    [

        {"firstname": {$regex: /^PIa$/i}}, 
        {"lastname": {$regex: /^NAtUrE$/i}}

    ]
})

这适用于 mongoshell。所以当我尝试将其放入我的 JS 文件时,

app.post("/searchresult", function(req, res){
    var thename = req.body.thename;
    LoginUser.find({
        $or: [

            {"firstname": {$regex: /^thename$/i}},
            {"lastname": {$regex: /^thename$/i}}
        ]
    }, function(err, searchedUser){
        if(err){
            console.log(err);
            res.redirect("back");
        } else {
            res.render("searchprofile", {foundUser: searchedUser});
        }
    });
});

它不起作用,尽管我尝试将正确的大小写放在名称上,但它不起作用..

我的问题是,在我的 JS 文件上使用正则表达式之前我需要做一些事情吗?

谢谢!

最佳答案

因为 thename 是一个变量,所以使用 RegExp对象构造函数从变量创建一个正则表达式实例,然后您可以在查询中使用该实例:

var rgx = new RegExp("^"+ thename +"$", "i");
LoginUser.find({
    "$or": [
        {"firstname": rgx },
        {"lastname": rgx }
    ]
}, callback);

关于regex - 使用正则表达式在 mongodb 中搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614608/

相关文章:

c# - HTML <tr> 标签的正则表达式

python - 拆分器正则表达式取决于它之前的字母

ruby-on-rails - 简单的正则表达式——用空格替换下划线

c# - 了解使用 Windows native WPF 客户端进行 ADFS 登录

javascript - Node.js: "process run out of memory"

mongodb - mongodb 中日志分析数据库的最佳模式设计

javascript - 如何在不破坏 HTML 标签的情况下将空格转换为 &nbsp?

node.js - 追加 ObjectId 数组

c# - 从结果中过滤掉 id mongodb c#

mongodb - 将子文档中的所有字段设置为 false,然后在单个查询中将第二个字段设置为 true