regex - 这两个 MongoDB $regex 语法有什么区别?

标签 regex mongodb

假设我想搜索用户名中包含字符串“foo”的所有用户。以下内容之间有什么实际区别吗?

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

和:

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

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

最佳答案

两者都可以工作,但是 .*foo.* 需要更多时间来返回有效匹配,因为 backtracking .*foo.*.

将“一些 foo 文本”与 /.*foo.*/ 进行比较:

enter image description here

/foo/ :

enter image description here

请注意,第一个正则表达式中 foo 之前的第一个 .* 会使其变慢,因为 . 可以同时匹配 fos。

关于regex - 这两个 MongoDB $regex 语法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38431306/

相关文章:

python - 正则表达式匹配字符串中指定长度的单词

java - 使用正则表达式替换两个符号之间的文本

java - 在捕获组中转义正则表达式

mongodb - Sails.js mongodb map 减少

node.js - Q.js 变量在并行流中传递

MongoDB聚合查找特定日期范围内的对象

python - 使用正则表达式删除 <a> 并仅从具有特定语言的 html 行返回其文本

php - 子文件夹中的附加 .htaccess | mod_rewrite 用于查询参数

java - mongo shell中如何获取子文档记录

schema - 如何在 mongodb 中为作者/用户模型设计模式