代码之家  ›  专栏  ›  技术社区  ›  JohnBigs

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

  •  0
  • JohnBigs  · 技术社区  · 5 年前

    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 回复  |  直到 5 年前
        1
  •  0
  •   Elvis    5 年前

    尝试

    db.users.findOne({"username" : {$regex : ".*\\r.*"}});
    
        2
  •  0
  •   user4761570 user4761570    5 年前

    我认为你的问题是你的*在最后。您要查找的是后跟任何字符的“2.”文本,而不是开头的字符,.*,在该文本之前表示任何不是回车符的内容。尝试将此更改为

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

        3
  •  0
  •   JohnBigs    5 年前

    我发现方法是:

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