Filteren op stringvelden in Mongodb is hoofdlettergevoelig zonder gebruik te maken van reguliere expressies. Waarom kun je geen reguliere expressies gebruiken?
Uw zoekopdracht kan als volgt worden bewerkt:
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));
Let op de tekens "^" en "$" om een volledige woordzoekopdracht te specificeren en het belangrijkste is de niet-hoofdlettergevoelige operator aan het einde van de reguliere expressie ("/i").
Een andere manier zou de tekstzoekfunctie kunnen zijn, waarvoor een tekstindex moet worden aangemaakt en die hoofdletterongevoelig is voor het Latijnse alfabet:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
In C# gebruik je met het tekstfilter:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Met een tekstindexquery in een OR-component moet u ook een index maken op het wachtwoordveld, anders zal de OR-query een fout opleveren: