Filtrering på strengfelter i Mongodb er store og små bogstaver uden brug af regulære udtryk. Hvorfor kan du ikke bruge regulære udtryk?
Din forespørgsel kan redigeres på denne måde:
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));
Læg mærke til "^" og "$"-tegnene for at specificere en komplet ordsøgning og vigtigst den store og små bogstaver-ufølsomme operator i slutningen af det regulære udtryk ("/i").
En anden måde kunne være tekstsøgning, der kræver oprettelse af et tekstindeks og er ufølsom for store og små bogstaver for det latinske alfabet:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
I C# vil du bruge med tekstfilteret:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Med en tekstindeksforespørgsel i en OR-klausul skal du også oprette et indeks på Password-feltet, ellers vil OR-forespørgslen producere en fejl: