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

Jak tworzyć zapytania bez rozróżniania wielkości liter w Mongodb?

Rozwiązanie Chrisa Fulstowa zadziała (+1), jednak może nie być wydajne, zwłaszcza jeśli twoja kolekcja jest bardzo duża. Nierootowane wyrażenia regularne (nie zaczynające się od ^ , który zakotwicza wyrażenie regularne na początku ciągu) oraz te używające i flaga niewrażliwości na wielkość liter nie będzie używać indeksów, nawet jeśli istnieją.

Alternatywną opcją, którą możesz rozważyć, jest denormalizacja danych w celu przechowywania wersji name pisanej małymi literami pole, na przykład jako name_lower . Następnie możesz skutecznie wykonać zapytanie (zwłaszcza jeśli jest indeksowane) dla dokładnych dopasowań bez rozróżniania wielkości liter, takich jak:

db.collection.find({"name_lower": thename.toLowerCase()})

Lub z dopasowaniem przedrostka (zrootowanym wyrażeniem regularnym) jako:

db.collection.find( {"name_lower":
    { $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

Oba te zapytania będą używać indeksu na name_lower .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb c# driver znajduje element w tablicy według wartości pola

  2. Jak zaktualizować wartości za pomocą pymongo?

  3. Mongoose findOneAndUpdate i upsert nie zwraca żadnych błędów, żadnych dokumentów nie ma wpływu

  4. Jak usunąć wszystkie dokumenty z kolekcji za pomocą Mongoose?

  5. Przegląd narzędzia MongoDB Database Profiler