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

c# mongodb versalfølsom søgning

Filtrering på strengfelter i Mongodb er store og små bogstaver uden brug af regulære udtryk. Hvorfor kan du ikke bruge regulære udtryk?

Din forespørgsel kan redigeres på denne måde:

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

Læg mærke til "^" og "$"-tegnene for at specificere en komplet ordsøgning og vigtigst den store og små bogstaver-ufølsomme operator i slutningen af ​​det regulære udtryk ("/i").

En anden måde kunne være tekstsøgning, der kræver oprettelse af et tekstindeks og er ufølsom for store og små bogstaver for det latinske alfabet:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

I C# vil du bruge med tekstfilteret:

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

Med en tekstindeksforespørgsel i en OR-klausul skal du også oprette et indeks på Password-feltet, ellers vil OR-forespørgslen producere en fejl:



  1. MongoDB:Tvinge datatype af felter?

  2. Sådan forskønner du eksporterede MongoDB-dokumenter i mongoexport

  3. MongoDB aggregeringssammenligning:group(), $group og MapReduce

  4. Concat int og string array felter, som er i forskellige arrays