2015-10-13 160 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

相關問題