Filtrering på strängfält i Mongodb är skiftlägeskänslig utan att använda reguljära uttryck. Varför kan du inte använda reguljära uttryck?
Din fråga kan redigeras så här:
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ägg märke till "^" och "$"-tecknen för att ange en fullständig ordsökning och framför allt den skiftlägesokänsliga operatorn i slutet av det reguljära uttrycket ("/i").
Ett annat sätt skulle vara textsökningen, som kräver skapandet av ett textindex och är skiftlägesokänslig för latinska alfabetet:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
I C# kommer du att använda med textfiltret:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Med en textindexfråga i en OR-sats måste du också skapa ett index på lösenordsfältet, annars kommer OR-frågan att ge ett fel: