这两个MongoDB $正则表达式语法之间的区别是什么?

时间:2016-07-18 07:53:39

标签: regex mongodb

假设我想在用户名中搜索包含字符串“foo”的所有用户。以下是否存在实际差异?

db.users.findOne({"username" : {$regex : ".*foo.*"}})

db.users.findOne({"username" : {$regex : "foo"}})

两者似乎都有效。但有人可以解释一下这个区别吗?

1 个答案:

答案 0 :(得分:6)

两者都有效,但.*foo.*需要更多时间才能返回有效匹配,因为.*foo.*会发生回溯

将“some foo text”与/.*foo.*/进行比较:

enter image description here

/foo/

enter image description here

请注意,它是第一个正则表达式.*之前的第一个foo,它使速度变慢,因为.可以匹配fo