Filtrowanie w polach znakowych w Mongodb rozróżnia wielkość liter bez użycia wyrażeń regularnych. Dlaczego dokładnie nie możesz używać wyrażeń regularnych?
Twoje zapytanie można edytować w następujący sposób:
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));
Zwróć uwagę na znaki "^" i "$", aby określić pełne wyszukiwanie słów i co najważniejsze, operator niewrażliwy na wielkość liter na końcu wyrażenia regularnego ("/i").
Innym sposobem może być wyszukiwanie tekstu, które wymaga utworzenia indeksu tekstu i nie uwzględnia wielkości liter w alfabecie łacińskim:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
W C# będziesz używać z filtrem tekstu:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
W przypadku zapytania indeksu tekstowego w klauzuli OR należy również utworzyć indeks w polu Hasło, w przeciwnym razie zapytanie OR spowoduje błąd: