sql >> Databasteknik >  >> NoSQL >> MongoDB

c# mongodb skiftlägeskänslig sökning

Filtrering på strängfält i Mongodb är skiftlägeskänslig utan att använda reguljära uttryck. Varför kan du inte använda reguljära uttryck?

Din fråga kan redigeras så här:

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ägg märke till "^" och "$"-tecknen för att ange en fullständig ordsökning och framför allt den skiftlägesokänsliga operatorn i slutet av det reguljära uttrycket ("/i").

Ett annat sätt skulle vara textsökningen, som kräver skapandet av ett textindex och är skiftlägesokänslig för latinska alfabetet:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

I C# kommer du att använda med textfiltret:

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

Med en textindexfråga i en OR-sats måste du också skapa ett index på lösenordsfältet, annars kommer OR-frågan att ge ett fel:



  1. FindAll i MongoDB .NET Driver 2.0

  2. Mongodb node.js $out med aggregering fungerar bara om man anropar toArray()

  3. använder nyckel som värde i Mongoengine

  4. Hur kör man runCommand med Mongoose?