sql >> Databáze >  >> NoSQL >> MongoDB

c# mongodb vyhledávání citlivé na velká a malá písmena

Filtrování řetězcových polí v Mongodb rozlišuje velká a malá písmena bez použití regulárních výrazů. Proč přesně nemůžete používat regulární výrazy?

Váš dotaz lze upravit takto:

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

Všimněte si znamének „^“ a „$“, které určují úplné vyhledávání slov, a nejdůležitější je operátor bez rozlišení velkých a malých písmen na konci regulárního výrazu („/i“).

Dalším způsobem by mohlo být textové vyhledávání, které vyžaduje vytvoření textového indexu a nerozlišuje malá a velká písmena pro latinku:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

V C# použijete s textovým filtrem:

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

U textového indexového dotazu v klauzuli OR budete muset vytvořit index také v poli Heslo, jinak dotaz OR vyvolá chybu:



  1. Geonear seřadit podle vzdálenosti a času

  2. Jak nakonfigurovat spring-data-mongodb pro použití sady replik prostřednictvím vlastností

  3. Chyba Mongo DB:neplatný operátor:$search při $textovém vyhledávání

  4. Odebrání objektu z pole uvnitř kolekce