1937 votes

Comment interroger mongodb avec des "j'aime"?

J'utilise mongodb 1.4.

Je veux quelque chose de requête SQL de l' like.

Pour un exemple en SQL:

select * from users where name like '%m%'

Comment faire la même chose dans mongodb? Je ne peux pas trouver un opérateur pour like dans le document de http://www.mongodb.org/display/DOCS/Advanced+Requêtes

2541voto

Kyle H Points 3654

Qui aurait du être:

db.users.find({"name": /.*m.*/})

ou similaires,

db.users.find({"name": /m/})

Vous êtes à la recherche de quelque chose qui contient "m" quelque part (SQL '%' opérateur est l'équivalent pour les expressions régulières' '.*'), pas quelque chose qui a "m" ancré au début de la chaîne.

648voto

Johnathan Douglas Points 691
db.users.insert({name: 'paulo'})
db.users.insert({name: 'patric'})
db.users.insert({name: 'pedro'})

db.users.find({name: /a/})  //like '%m%'

: paulo, patric

db.users.find({name: /^pa/}) //like 'm%' 

: paulo, patric

db.users.find({name: /ro$/}) //like '%m'

: pedro

391voto

Afshin Mehrabani Points 4174

En Python et PyMongo:

db.users.find({'name': {'$regex': 'sometext'}})

108voto

leon Points 1034

en php, vous devez utiliser le codage comme ceci:

$collection->find(array('name'=> array('$regex' => 'm'));

74voto

jpartogi Points 8253

Vous pourriez utiliser des regex pour que mongo.

e.g: db.users.find({"name": /^m/})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X