Beim Filtern nach Zeichenfolgenfeldern in Mongodb wird zwischen Groß- und Kleinschreibung unterschieden, ohne dass reguläre Ausdrücke verwendet werden. Warum genau können Sie keine regulären Ausdrücke verwenden?
Ihre Abfrage kann wie folgt bearbeitet werden:
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));
Beachten Sie die Zeichen "^" und "$", um eine vollständige Wortsuche anzugeben, und vor allem den Operator, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird, am Ende des regulären Ausdrucks ("/i").
Ein anderer Weg wäre die Textsuche, die die Erstellung eines Textindexes erfordert und für das lateinische Alphabet die Groß- und Kleinschreibung nicht berücksichtigt:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation
In C# verwenden Sie mit dem Textfilter:
var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email),
Builders<ME_User>.Filter.Eq(u => u.Password, password));
Bei einer Textindexabfrage in einer OR-Klausel müssen Sie auch einen Index für das Passwortfeld erstellen, andernfalls erzeugt die OR-Abfrage einen Fehler: