如何在mongo $ regex中添加特殊字符

时间:2019-02-12 13:52:51

标签: regex mongodb regular-language

我想在mongo中的字符串字段中查找“ \ r”,我发现了这一点,看起来效果很好:

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

问题是我想查找“ \ r”,并且可以在其中找到它,所以我就这样做了:

db.users.findOne({"username" : {$regex : ".*\r.*"}});

而且效果很好,我该如何解决?

示例文档:

{
    "personId" : 1,
    "personName" : "john",
    "address" : {
        "city" : "Rue Neuve 2\\r\\rue Pré-du-Mar \\r ché 1 1003 Lausanne",
        "street" : "",
        "zipCode" : "",
        "streetNumber" : ""
    }
}

所以我的查询是:

db.users.findOne({"address.city" : {$regex : ".*\r.*"}});

也尝试过:

db.users.findOne({"address.city" : {$regex : ".*\\r.*"}});

3 个答案:

答案 0 :(得分:0)

尝试

db.users.findOne({"username" : {$regex : ".*\\r.*"}});

答案 1 :(得分:0)

我认为您的问题是,您的。*末尾会倒退。您正在寻找“ 2”。文字后跟任何字符,而不是开头的。*,在文字前说出不是回车符的任何内容。尝试将其更改为

db.users.findOne({"username" : {$regex : ".*\\r*."}});

哪个说给我“ \ r”,在字面值之前有任何非回车符,在字面量之后有任何非回车符。

答案 2 :(得分:0)

我发现这样做的方法是:

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