2013-05-15 84 views
12

我想在文档中搜索具有特殊字符的值,如" $/. @ > "在MongoDB文档中搜索带有特殊字符的字符串

让我们考虑,我一直用的myKey像值"test$australia", "test$austria", "test$belgium", "green.africa".

我想与'.*$aus.*',

例如搜索值,

db.myCollection.find({ myKey : /.*$aus.*/i }); 

OR

db.myCollection.find({ myKey : { '$regex' : '.*$aus.*','$options' : 'i' }); 

以上查询不工作,浩我应该形成查询吗? 我正在使用MongoDB 2.4.1。

回答

12

你要逃避$\

db.myCollection.find({ myKey : /.*\$aus.*/i }); 
// OR 
db.myCollection.find({myKey: { $regex: '.*\\$aus.*', $options: 'i'}}) 
+0

请问您可以删除在控制台中不需要的qr操作符..我也编辑了问题。它确实有效。 – dex

+0

另外我怎样才能达到与REGEX选项相同。 – dex

+1

您必须在mongo json查询中的正则表达式字符串中加上反斜杠:'db.myCollection.find({myKey:{$ regex:'。* \\ $ aus。*',$ options:'i'}} )' –

3
db.test.insert({word: 'hai('}); 
db.test.insert({word: 'jana'}); 

输出是这样的:

{ "_id" : ObjectId("56f27fb71d843581261433c6"), "word" : "hai(" } 
{ "_id" : ObjectId("56f27ffe1d843581261433c8"), "word" : "jana" } 

注:想独自特殊字符行,以便

db.test.find({word:{$regex:"\\("}}); 

输出是这样的:

{ "_id" : ObjectId("56f27fb71d843581261433c6"), "word" : "hai(" } 
相关问题