MongoDB CL:我怎样才能逃脱;(“在正则表达式文字中? 问题
使用MongoDB CL:我怎样才能逃脱;(“在正则表达式文字中? 问题,mongodb,Mongodb,使用mongo命令行工具,我希望使用regex文本在字符串字段中获取包含“(”的文档,如下所示: {writers: / \(/} 但是,这在mongo命令行工具(v4.4.0)中失败,可能是因为它正在寻找一个右括号),尽管(被转义: 我试过的 双转义/\\(/也不起作用: 权变措施 该表达式在Compass中运行良好: 我可以用它的八进制转义序列表达(){writers://\50/}: 我可以对字符串文本使用{regex…}: 版本 我正在使用mongo4.2.9和4.4.0:
mongo
命令行工具,我希望使用regex文本在字符串字段中获取包含“(”的文档,如下所示:
{writers: / \(/}
但是,这在mongo
命令行工具(v4.4.0)中失败,可能是因为它正在寻找一个右括号)
,尽管(
被转义:
我试过的
双转义/\\(/
也不起作用:
权变措施
(
){writers://\50/}:{regex…}
:mongo4.2.9
和4.4.0
:
有没有一种方法可以匹配正则表达式文字中的“(”字符,而无需采取这种变通方法
/…/
是一种更干净的语法。在mongo
shell中,不幸的是,我认为除了执行\\(
)之外没有更干净的方法。这是mongo
shell本身的局限性
但是,可以使用新版本(目前为beta版)来实现您的目标:
❯ mongosh
Current sessionID: 71d48f548f666555d896a975
Connecting to: mongodb://127.0.0.1:27017
Using MongoDB: 4.4.0
Using Mongosh Beta: 0.0.5
For more information about mongosh, please see the wiki: github.com/mongodb-js/mongosh/wiki
> db.test.find({val: /\(/})
[ { _id: 5f5886ab588163bae7b4e1b5, val: '()' } ]
请注意,仍然需要反斜杠转义,因为括号是PCRE语法的一部分。在
mongo
shell中,不幸的是,我认为除了执行\\(
)之外,没有更干净的方法。这是mongo
shell本身的局限性
但是,可以使用新版本(目前为beta版)来实现您的目标:
❯ mongosh
Current sessionID: 71d48f548f666555d896a975
Connecting to: mongodb://127.0.0.1:27017
Using MongoDB: 4.4.0
Using Mongosh Beta: 0.0.5
For more information about mongosh, please see the wiki: github.com/mongodb-js/mongosh/wiki
> db.test.find({val: /\(/})
[ { _id: 5f5886ab588163bae7b4e1b5, val: '()' } ]
请注意,反斜杠转义仍然是必需的,因为括号是PCRE语法的一部分。
db.movies.find({writers://\(//})
也不起作用。它产生的结果与/\(//
;继续提示(..
)不,您必须执行db.test.find({val:{$regex:'\('}}})相同
。正如我在回答中提到的,这是mongo shell中js解释器的问题。这也是创建mongosh的部分原因,我认为db.movies.find({writers:/\\(/})
也不起作用。它产生的结果与/\(/
;继续提示(..
)不,您必须执行db.test.find({val:{$regex:'\\('}}}})
。正如我在回答中提到的,这是mongo shell中js解释器的一个问题。我认为这就是创建mongosh的部分原因