Текстовото търсене е предназначено да индексира низове въз основа на евристика на езика . Текстовото индексиране включва две основни стъпки:токенизиране (преобразуване на низ в отделни термини от интерес), последвано от stemming (преобразуване на всеки термин в коренна форма за индексиране въз основа на специфични за езика правила).
По време на стъпката на токенизиране определени знаци (например препинателни знаци като @
) се класифицират като разделители на думи (известни още като разделители ), а не въвеждане на текст и се използва за разделяне на оригиналния низ на термини. Специфични за езика стоп думи
(често срещани думи като "the", "is" или "on" на английски) също са изключени от текстов индекс.
Тъй като фразата ви за търсене на @@@
се състои изцяло от разделители, няма съответен запис в текстовия индекс.
Ако искате да съответствате на общи модели на низове, трябва да използвате регулярни изрази вместо текстово търсене. Например:db.getCollection('TestCollection').find({field2:/@@@/})
. Все пак, моля, обърнете внимание на предупрежденията относно използване на индекс за регулярни изрази.