Comment utiliser MongoRegex (MongoDB C # Driver)
-
22-09-2019 - |
Question
Quelqu'un a-t-il une idée d'utiliser MongoRegex pour la recherche de documents?
Je tentais, 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 le conducteur applique les guillemets à l'expression rationnelle?
Merci ..
La solution
vous voulez juste une simple requête de préfixe. Votre regex est alors ^ + searchkey. En outre, ce formulaire MongoDB permet d'utiliser un index sur Nom.
var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i"));
collection.Find(spec)
Autres conseils
Je pense que vous devez inclure pas s "/" en C #, i.e..,
spec.Add("Name", new MongoRegex(searchKey + "*", "i"));
Après avoir creusé le code source, j'ai finalement trouvé la réponse:)
var spec = new Document();
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i"));
collection.Find(spec)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow