2011-03-17 5 views
7

Je travaille sur mongodb. Dans lequel je veux utiliser comme requête. ma structure de collecte est la suivante.comme requête dans mongoDB

{ "name" : "xy" , "age" : 34 , "location" : "sss"} 

{ "name" : "xyx" , "age" : 45 , "location" : "sshs"} 

{ "name" : "x" , "age" : 33 , "location" : "shhss"} 

{ "name" : "pq" , "age" : 23 , "location" : "hhh"} 

{ "name" : "pqr" , "age" : 12 , "location" : "sss"} 

Je veux trouver les enregistrements correspondant à "name": "x".

alors la requête retournera les trois enregistrements correspondant à xy, xyz, x.

Est-ce possible en mongo?

si quelqu'un connaît réponse plz.

Merci

Répondre

8

Vous pouvez utiliser des expressions régulières pour faire:

db.customers.find({ name : /^x/i }); 

Vous voudrez probablement avoir quelques indices sur le champ Nom.

En savoir plus sur le site MongoDB Documetation.

+1

index ne fonctionnera pas avec regex insensible à la casse – pingw33n

+0

@ pingw33n a un bon point. Une approche consiste à ajouter un autre champ dans la collection qui stocke la valeur de fond du nom, l'indexer et l'interroger avec l'entrée comme étant réduite. – blu

+0

@ pingw33n Merci d'avoir signalé cela. @blu C'est l'approche que j'utilise dans les cas comme celui-ci et cela semble bien fonctionner, sauf si vous avez vraiment besoin de la casse, où vous avez une valeur de "Xx" et une de "xX" et les deux sont normalisées à "xx". –