sql >> Base de Datos >  >> NoSQL >> MongoDB

La búsqueda de texto completo en MongoDB no arroja el resultado esperado para @@@

La búsqueda de texto está diseñada para indexar cadenas según heurística del lenguaje . La indexación de texto implica dos pasos generales:tokenización (convertir una cadena en términos individuales de interés) seguido de stemming (convirtiendo cada término en una forma raíz para la indexación según las reglas específicas del idioma).

Durante el paso de tokenización, ciertos caracteres (por ejemplo, símbolos de puntuación como @ ) se clasifican como separadores de palabras (también conocidos como delimitadores ) en lugar de entrada de texto y se usa para separar la cadena original en términos. palabras de parada específicas del idioma (palabras comunes como "the", "is" o "on" en inglés) también se excluyen de un índice de texto.

Desde su frase de búsqueda de @@@ consta enteramente de delimitadores, no hay ninguna entrada correspondiente en el índice de texto.

Si desea hacer coincidir patrones de cadenas genéricos, debe usar expresiones regulares en lugar de búsqueda de texto. Por ejemplo:db.getCollection('TestCollection').find({field2:/@@@/}) . Sin embargo, tenga en cuenta las advertencias sobre uso de índice para expresiones regulares.