Filtrování řetězcových polí v Mongodb rozlišuje velká a malá písmena bez použití regulárních výrazů. Proč přesně nemůžete používat regulární výrazy?
Váš dotaz lze upravit takto:
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));
Všimněte si znamének „^“ a „$“, které určují úplné vyhledávání slov, a nejdůležitější je operátor bez rozlišení velkých a malých písmen na konci regulárního výrazu („/i“).
Dalším způsobem by mohlo být textové vyhledávání, které vyžaduje vytvoření textového indexu a nerozlišuje malá a velká písmena pro latinku:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
V C# použijete s textovým filtrem:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
U textového indexového dotazu v klauzuli OR budete muset vytvořit index také v poli Heslo, jinak dotaz OR vyvolá chybu: