mongo shell搜索" /" fubak@drooop.com" /"

时间:2014-05-15 10:06:19

标签: regex mongodb mongodb-query mongo-shell

我可能在我们的代码上放了一个基本上破坏了我们的数据库数据的错误。

我们偶尔会遇到一个在他的电子邮件中有“”的用户名,因此我们需要解决此问题。

如何使用我的mongo shell在一个字段中搜索“/"fubak@drooop.com"/”之类的值?

我一直在尝试我能想到的所有组合:

db.users.find(username: /"/" .* /)

db.users.find(username: //.*//)

db.users.find(username: /"".*/)

但似乎没有任何效果。

3 个答案:

答案 0 :(得分:0)

不确定哪个是你的问题,所以MongoDB中数据的两种可能方案的解决方案都是这样的:

{ "email" : "\"/\"fubak@drooop.com\"/\"" }
{ "email" : "/fubak@drooop.com/" }
{ "email": "\"blablabla@blip.ca\"" }

第一份文件匹配:

db.problem.find({ email: /^\"/  })

第二份文件匹配:

db.problem.find({ email: /^\// })

第三次文件匹配

db.problem.find({ email: /^\"/ })

不知道你的意思,否则#34;有引号"因为这不是有效的JSON,并且通过扩展也是无效的BSON。

答案 1 :(得分:0)

新的RegExp('^“。*')

这将查找以“。

开头的所有记录

感谢。

答案 2 :(得分:0)

试试这个:

db.users.find({ email: "(?:[^\\"]+|\\.)*  })   

这将匹配电子邮件中包含引号的所有文档