转义MongoDB regex/PCRE中的方括号

转义MongoDB regex/PCRE中的方括号,regex,mongodb,pcre,Regex,Mongodb,Pcre,我需要在MongoDB数据库中查询字段x以[text开头的文档。我尝试了以下操作: db.collection.find({x:{$regex://^[text/}}) 它失败了,因为[是正则表达式语法的一部分。所以我花了一些时间试图找到如何从我的正则表达式中转义[,但至今没有成功 感谢您的帮助!在方括号前使用反斜杠\,如下所示: db.collection.find({"x":{"$regex":"\\[text"}}) db.collection.find({"x":{"$regex":

我需要在MongoDB数据库中查询字段
x
[text
开头的文档。我尝试了以下操作:

db.collection.find({x:{$regex://^[text/}})
它失败了,因为
[
是正则表达式语法的一部分。所以我花了一些时间试图找到如何从我的正则表达式中转义
[
,但至今没有成功


感谢您的帮助!

在方括号前使用反斜杠
\
,如下所示:

db.collection.find({"x":{"$regex":"\\[text"}})
db.collection.find({"x":{"$regex":"^\\[text"}})

它返回以
[text

例如:

在文档中包含以下数据

{ "_id" : ObjectId("55644128dd771680e5e5f094"), "x" : "[text" }
{ "_id" : ObjectId("556448d1dd771680e5e5f099"), "x" : "[text sd asd " }
{ "_id" : ObjectId("55644a06dd771680e5e5f09a"), "x" : "new text" }
并使用
db.collection.find({“x”:{“$regex”:“\\[text”})
返回以下结果:

{ "_id" : ObjectId("55644128dd771680e5e5f094"), "x" : "[text" }
{ "_id" : ObjectId("556448d1dd771680e5e5f099"), "x" : "[text sd asd " }

@CasimiritHippolyte尝试了db.collection.find({x:{$regex://^[text/}),但无效either@ThomasWeiss为什么使用
regex
find({“x”:“[text”})
也有效或有帮助more@yogesh一个简单的“查找”将查找完全匹配的字段,而不是以[文本,但您的链接提供了解决方案的提示,因此将其转换为答案,我将接受它。不,您需要^字符来匹配字符串的开头。有效的版本是:db.collection.find({x:{$regex:::::'^\[text}})我猜您的查询也会匹配“x”:“hello[text”
{ "_id" : ObjectId("55644128dd771680e5e5f094"), "x" : "[text" }
{ "_id" : ObjectId("556448d1dd771680e5e5f099"), "x" : "[text sd asd " }