Cóż, zarówno wyszukiwanie wyrażeń regularnych, jak i tekstowych ($text) pomaga w bardzo wydajnym wyszukiwaniu w tekście. Oba mają swoje wady i zalety, ale istnieją dwie wyraźne różnice
wyrażenie regularne
-
Regex nie korzysta z indeksów, chyba że wyszukujesz na początku ciągu za pomocą
^
operatora. -
Regex umożliwia wyszukiwanie częściowego tekstu. dlatego .* i tak wiele innych wzorców.
-
Regex nie obsługuje słów stop i szumów.
$text
indeksy tekstowe w mongodb są naprawdę szybkie i powinny być preferowane. Jednak MongoDB nie implementuje w pełni funkcjonalnych indeksów tekstowych. Jedną z głównych wad jest to, że nie obsługuje częściowego dopasowania. np. jeśli szukasz kota, wyszuka on tylko kota i koty, ale nie rysia rudego ani gąsienicy.
Najważniejsze jest to, jeśli chcesz zaimplementować funkcję taką jak RDBMS like
operator, '$text' ci nie pomoże (przynajmniej w obecnych implementacjach MongoDB, ale w przyszłości może się to zmienić).