MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

c# mongodb wyszukiwanie z uwzględnieniem wielkości liter

Filtrowanie w polach znakowych w Mongodb rozróżnia wielkość liter bez użycia wyrażeń regularnych. Dlaczego dokładnie nie możesz używać wyrażeń regularnych?

Twoje zapytanie można edytować w następujący sposób:

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

Zwróć uwagę na znaki "^" i "$", aby określić pełne wyszukiwanie słów i co najważniejsze, operator niewrażliwy na wielkość liter na końcu wyrażenia regularnego ("/i").

Innym sposobem może być wyszukiwanie tekstu, które wymaga utworzenia indeksu tekstu i nie uwzględnia wielkości liter w alfabecie łacińskim:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operation

W C# będziesz używać z filtrem tekstu:

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

W przypadku zapytania indeksu tekstowego w klauzuli OR należy również utworzyć indeks w polu Hasło, w przeciwnym razie zapytanie OR spowoduje błąd:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. dokument zwrotu z ostatnim poddokumentem tylko w agregacie mongodb

  2. Mongoid 3 + Heroku (MongoHQ) powodują Moped::Errors::OperationFailure

  3. ReactiveMongo FindAndModify Wyjaśnienie

  4. Automatyzacja i zarządzanie bazami danych Open Source w chmurze — zapowiedź ClusterControl 1.6

  5. Agregacja Mongo z danymi podzielonymi na strony i sumami