我的以下find
查询不适用于小写方案。如果集合中的值是大写&我传递的是小写,没有结果。
如何覆盖区分大小写的行为?
User.find({
$or:
[
{ 'basicinformation.firstname': { '$regex': firstname + '.*' } },
{ 'basicinformation.lastname': { '$regex': lastname + '.*' } }
]
}
答案 0 :(得分:2)
User.find({
$or:
[
{
'basicinformation.firstname': {
'$regex': firstname + '.*', '$options': 'i'
}
},
{
'basicinformation.lastname': {
'$regex': lastname + '.*', '$options': 'i'
}
}
]
}
因此"i"
使搜索大小写不敏感。请注意,即使您将正则表达式^
锚定到字符串的开头,调用不区分大小写的搜索也会强制进行索引扫描。
由于这可能会影响您的性能,因此请考虑其他选项,例如文本搜索索引和查询,或者使用其他字段修改案例,或者在输入中修改案例并以单一案例格式存储,如果您可以使用它。< / p>