2015-10-13 29 views
0

我在MongoDB查询中遇到问题。我只需要从表'Feed'中获取那些包含子字符串'you & me'或'abc'的字段的消息。 DEF”。MongoDB正则表达式与具有特殊字符的多个字符串

我正在使用以下查询,但它不工作。

db.getCollection('Feed').find({"message": { "$regex" : 'you & me | abc ? def'}}); 

我通过用其十六进制值替换所有特殊字符像下面给出的查询得到了一个替代的解决方案也可用于以上。

db.getCollection('Feed').find({"message": { "$regex" : 'you \0x26 me | abc \0x3f def'}}); 

但在这种情况下,因此仅来了“你\我0X26”这意味着,如果我转换特殊字符十六进制值。它只适用于第一个搜索正则表达式。

回答

1

你需要在你的正则表达式中跳过&?,因为它们是特殊字符。

db.getCollection('Feed').find({ 'message': /\s*you \& me\s*|\s*abc \? def\s*/ }) 

Demo

+0

在演示中给出的链接,在那里给出解释是\ S *匹配任何空白字符。但就我而言,搜索关键字前后可能有任何字符。我的要求在\ s *的地方做了什么改变。 –

+0

这并不重要,正则表达式仍然有效。去尝试一下 – styvane

相关问题