Jak regulární výraz, tak textové vyhledávání ($text) vám pomohou velmi efektivně vyhledávat v textu. Oba mají své výhody a nevýhody, ale existují dva jasné rozdíly
regulární výraz
-
Regex nevyužívá výhody indexů, pokud nevyhledáváte na začátku řetězce pomocí
^
operátor. -
Regex umožňuje prohledávat částečný text. proto .* a mnoho dalších vzorů.
-
Regex nepodporuje slova stop nebo noise.
$text
textové indexy v mongodb jsou opravdu rychlé a měly by být preferovány. MongoDB však neimplementuje plně funkční textové indexy. Jednou z hlavních nevýhod je, že nepodporuje částečnou shodu. např. pokud hledáte kočku, bude hledat pouze kočku a kočky, ale ne bobcat nebo housenku.
Sečteno a podtrženo, pokud chcete implementovat funkci jako RDBMS
like
operátor, '$text' vám nepomůže (alespoň v současných implementacích MongoDB, ale v budoucnu se to může změnit).