2013-05-15 147 views
12

" $/. @ > "のような特殊文字を持つ値を文書内で検索したい。MongoDB文書で特殊文字を含む文字列を検索する

は、私は例えば'.*$aus.*',

で値を検索したい"test$australia", "test$austria", "test$belgium", "green.africa".

のような値でMYKEYをしました、

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(" } 
関連する問題