2013-05-15 17 views
12

Desidero cercare valori con caratteri speciali come " $/. @ > " in un documento.Ricerca stringa con caratteri speciali nel documento MongoDB

Consente di considerare, ho myKey con valori come "test$australia", "test$austria", "test$belgium", "green.africa".

voglio valori di ricerca con '.*$aus.*',

Per esempio,

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

O

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

Sopra le domande non funzionano, ho dovrei formare una query? Sto usando MongoDB 2.4.1.

risposta

12

Dovete fuggire $ da \:

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

Potrebbe rimuovere l'operatore qr che non è necessario in console. Ho modificato anche la domanda. Ha funzionato. – dex

+0

Inoltre, come posso ottenere lo stesso con l'opzione REGEX. – dex

+1

Devi raddoppiare la barra rovesciata nella stringa regex nella query mongo json: 'db.myCollection.find ({myKey: {$ regex: '. * \\ $ aus. *', $ Options: 'i'}}) ' –

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

Uscita essere così:

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

Nota: Vuoi la riga carattere speciale da solo in modo

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

L'output è in questo modo:

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