【发布时间】:2016-02-25 01:47:19
【问题描述】:
“how can I do a case insensitive find in mongo”这个问题似乎主要是按照“使用正则表达式”来回答的。如果您的搜索字符串事先已知 (/foo/),或者已知不包含正则表达式运算符 (^.+*$/\-()[]...),这很好。
就我而言,我想对电子邮件地址进行不区分大小写的搜索,其中可以包含点和加号。 “正则表达式转义”字符串当然是可能的,但即使有一个标准的“Regex.escapeString”函数(which there isn't),对于这样一个简单的问题,它已经开始难以解释和维护了。
有没有办法在不使用正则表达式的情况下在 mongo 中进行不区分大小写的匹配?
【问题讨论】:
-
"all the answers" 这么说是有原因的,那是因为除非您存储了规范化的大小写字符串版本(可能是最好的选择),否则那就是你在做什么。至于“特殊字符”,你可以随时转义它们,这就是“\”的用途。所以“\\”表示“字符串”“\”。
-
感谢@BlakesSeven。这听起来是一个很好的答案。 (我还改写了开头的双曲句)
-
显然这不会解决所有情况,但是如果您将某些内容默认保存为全小写或全大写,则设置器将解决搜索问题。例如,对于保存为 FL、CA、NY 等的州,使用
set: state => state.toUpperCase()也会导致您的搜索自动大写。