【发布时间】:2023-04-07 04:30:01
【问题描述】:
如何在 MongoDB 中搜索查询(使用 mongoose 库)而不区分大小写?
假设我有一个包含Adam 字符串数据的查询。该查询区分大小写,因此以adam 搜索该查询将返回空值。
我尝试使用正则表达式,并禁用区分大小写。它完成了这项工作,但现在每当我搜索 ad 时,它都会找到并返回 Adam,这是我不想要的。
如何以正确的方式搜索不区分大小写的查询? 谢谢!
这是我查找不区分大小写但存在正则表达式错误的查询的代码。
server.get('/test/:username', (req, res)=> {
const username = req.params.username
usersDB.findOne({'username': {'$regex': username, $options: '?-i'}}, (err, data)=> {
if(err) {
throw err
}
if(!data) {
console.log('user not found')
res.redirect('/')
} else if(data) {
console.log('user found: ' + data.username)
res.redirect('/')
}
})
})
【问题讨论】:
-
这能回答你的问题吗? Case insensitive search in Mongo
-
嘿@sidgate!我真的很感谢你发送那个,不幸的是,没有。我尝试了所有这些响应,而不是修复搜索错误,它只是返回一个空值。
-
您需要使用正确的正则表达式
'^string$'来标记字符串的开始和结束。或者使用$toLower并匹配小写字符串。 -
对不起,我不太明白你想说什么。你是在告诉我让它
usersDB.findOne({'username': {'$regex': '^string$', $options: 'i'}}或usersDB.findOne({'username': {'$regex': '^username$', $options: 'i'}}因为两者都不起作用。非常感谢您帮助我!