MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

c# mongodb ricerca con distinzione tra maiuscole e minuscole

Il filtraggio sui campi stringa in Mongodb fa distinzione tra maiuscole e minuscole senza utilizzare espressioni regolari. Perché esattamente non puoi usare le espressioni regolari?

La tua richiesta può essere modificata in questo modo:

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));

Notare i segni "^" e "$" per specificare una ricerca di parole completa e, soprattutto, l'operatore senza distinzione tra maiuscole e minuscole alla fine dell'espressione regolare ("/i").

Un altro modo potrebbe essere la ricerca di testo, che richiede la creazione di un indice di testo e non fa distinzione tra maiuscole e minuscole per l'alfabeto latino:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

In C#, utilizzerai con il filtro di testo:

var filter = Builders<ME_User>.Filter.And(
Builders<ME_User>.Filter.Text(email), 
Builders<ME_User>.Filter.Eq(u => u.Password, password));

Con una query di indice di testo in una clausola OR, dovrai creare anche un indice sul campo Password, altrimenti la query OR produrrà un errore: