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)中失败,可能是因为它正在寻找一个右括号
,尽管
被转义:

我试过的 双转义
/\\(/
也不起作用:

权变措施
  • 该表达式在Compass中运行良好:
  • 我可以用它的八进制转义序列表达
    ){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的部分原因