标签: regex mongodb
假设我想在用户名中搜索包含字符串“foo”的所有用户。以下是否存在实际差异?
db.users.findOne({"username" : {$regex : ".*foo.*"}})
和
db.users.findOne({"username" : {$regex : "foo"}})
两者似乎都有效。但有人可以解释一下这个区别吗?
答案 0 :(得分:6)
两者都有效,但.*foo.*需要更多时间才能返回有效匹配,因为.*foo.*会发生回溯。
.*foo.*
将“some foo text”与/.*foo.*/进行比较:
/.*foo.*/
和/foo/:
/foo/
请注意,它是第一个正则表达式.*之前的第一个foo,它使速度变慢,因为.可以匹配f和o第
.*
foo
.
f
o