2010-03-26 8 views
1

Quelqu'un at-il une idée de l'utilisation de MongoRegex pour la recherche de documents?Comment utiliser MongoRegex (pilote MongoDB C#)

J'ai essayé, mais ne renvoie rien de nouveau:

var spec = new Document(); 
spec.Add("Name", new MongoRegex("/" + searchKey + "*/", "i")); 
collection.Find(spec) 

Vous vous demandez pourquoi il ne fonctionne pas, j'ai essayé d'exécuter la commande suivante à partir de la console:

db.things.find({"Name":/john*/i}) /* WORKS */ 
db.things.find({"Name":"/john*/i"}) /* DOESN'T WORK */ 

Est-ce possible que la le conducteur applique une double citation à l'expression régulière?

Merci ..

Répondre

2

vous voulez juste une requête de préfixe simple. Votre regex est alors^+ searchKey. En outre, ce formulaire permettra à mongodb d'utiliser un index sur Name.

var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i")); 
collection.Find(spec) 
+0

Merci Craig ... – heisthedon

0

Je pense que vous devez inclure pas le "/" s en C#, c.-à-

spec.Add("Name", new MongoRegex(searchKey + "*", "i")); 
+0

cela ne fonctionne pas – heisthedon

0

Après avoir creusé le code source, j'ai enfin trouvé la réponse :)

var spec = new Document(); 
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i")); 
collection.Find(spec)