假设我想搜索用户名中包含字符串“foo”的所有用户。以下内容之间有什么实际区别吗?
db.users.findOne({"username" : {$regex : ".*foo.*"}})
和:
db.users.findOne({"username" : {$regex : "foo"}})
两者似乎都有效。但是有人可以解释一下区别吗?
最佳答案
两者都可以工作,但是 .*foo.*
需要更多时间来返回有效匹配,因为 backtracking .*foo.*
.
将“一些 foo 文本”与 /.*foo.*/
进行比较:
和/foo/
:
请注意,第一个正则表达式中 foo
之前的第一个 .*
会使其变慢,因为 .
可以同时匹配 f
和 o
s。
关于regex - 这两个 MongoDB $regex 语法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38431306/