基本上我已经创建了一个搜索功能,你可以在其中搜索用户,基本上它可以工作,但问题是,它区分大小写,我想使用不区分大小写搜索用户。
我在堆栈溢出中找到了一个解决方案,并在我的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文件上使用正则表达式之前,我是否需要做一些事情?
感谢你!
答案 0 :(得分:2)
可以使用getExternalFilesDirs
$options:'i"
或:
LoginUser.find({
$or: [
{'firstname': {$options:'i', $regex: 'PIa'}},
{'lastname': {$options:'i', $regex: 'NAtUrE'}}
]
})
还阅读了文档:https://docs.mongodb.com/manual/reference/operator/query/regex/
它有一些不错的功能,例如:LoginUser.find({
$or: [
{'firstname': {$regex: /PIa/i}},
{'lastname': {$regex: /NAtUrE/i}}
]
})
,$nin
答案 1 :(得分:2)
因为thename
是一个变量,所以使用RegExp
对象构造函数从变量创建一个正则表达式实例,然后在查询中使用该实例:
var rgx = new RegExp("^"+ thename +"$", "i");
LoginUser.find({
"$or": [
{"firstname": rgx },
{"lastname": rgx }
]
}, callback);