MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

c# mongodb recherche sensible à la casse

Le filtrage des champs de chaîne dans Mongodb est sensible à la casse sans utiliser d'expressions régulières. Pourquoi exactement vous ne pouvez pas utiliser d'expressions régulières ?

Votre requête peut être modifiée comme suit :

var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Regex(u => u.Email, new BsonRegularExpression("/^" + email + "$/i"), 
Builders<ME_User>.Filter.Eq(u => u.Password, password));

Remarquez les signes "^" et "$" pour spécifier une recherche de mot complète et surtout l'opérateur insensible à la casse à la fin de l'expression régulière ("/i").

Une autre méthode serait la recherche de texte, qui nécessite la création d'un index de texte et est insensible à la casse pour l'alphabet latin :http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

En C#, vous utiliserez avec le Filtre Texte :

var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email), 
Builders<ME_User>.Filter.Eq(u => u.Password, password));

Avec une requête d'index de texte dans une clause OR, vous devrez également créer un index sur le champ Mot de passe, sinon la requête OR produira une erreur :