Текстовый поиск предназначен для индексирования строк на основе языковой эвристики . Индексирование текста включает два основных шага: токенизация (преобразование строки в отдельные термины интереса) с последующим выводом (преобразование каждого термина в корневую форму для индексации на основе по языковым правилам).
На этапе токенизации определенные символы (например, знаки пунктуации, такие как @
) классифицируются как разделители слов (или разделители ), а не для ввода текста и используются для разделения исходной строки на термины. Специфичные для языка стоп-слова (общие слова, такие как "the", "is" или "on" на английском языке) также исключаются из текстового индекса.
Поскольку поисковая фраза @@@
полностью состоит из разделителей, в текстовом указателе нет соответствующей записи.
Если вы хотите сопоставить общие строковые шаблоны, вам следует использовать регулярные выражения вместо текстового поиска. Например: db.getCollection('TestCollection').find({field2:/@@@/})
. Однако обратите внимание на предостережения при использовании индекса для регулярных выражений.