下面的find查询在小写场景中不起作用。如果集合中的值是大写&我所传递的是小写,则不会给出结果。
如何覆盖区分大小写的行为?
User.find({
$or:
[
{ 'basicinformation.firstname': { '$regex': firstname + '.*' } },
{ 'basicinformation.lastname': { '$regex': lastname + '.*' } }
]
}发布于 2014-05-23 08:43:07
将$options添加到$regex运算符中:
User.find({
$or:
[
{
'basicinformation.firstname': {
'$regex': firstname + '.*', '$options': 'i'
}
},
{
'basicinformation.lastname': {
'$regex': lastname + '.*', '$options': 'i'
}
}
]
}因此,那里的"i"使得搜索的大小写不敏感。请注意,调用不区分大小写的搜索最多只能强制索引扫描,即使您将正则表达式锚定在字符串的开头。
由于这很可能影响您的性能,请考虑其他选项,如文本搜索索引和查询或修改大小写,或者使用附加字段或在输入和存储中使用单独的案例格式(如果可以的话)。
https://stackoverflow.com/questions/23824598
复制相似问题