MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

c# Mongodb-Suche mit Berücksichtigung der Groß-/Kleinschreibung

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: