Los índices de texto tienen estas restricciones:
Un índice de texto por colección
Una colección puede tener como máximo un índice de texto.
Atlas Search (disponible en MongoDB Atlas) admite múltiples índices de texto completo en una sola colección. Para obtener más información, consulta la documentación de Atlas Search.
Búsqueda de texto y sugerencias
Si un query incluye una expresión $text, no se puede usar hint() para especificar qué índice usar para el query.
Búsqueda de texto y cadenas de varias palabras
Si la string $search de una operación $text incluye una string de varias palabras y términos individuales, $text solo coincide con los documentos que incluyan la string de varias palabras.
Para obtener un ejemplo de búsqueda de texto con cadenas de varias palabras, consulta Cadenas exactas.
Índice de texto y ordenación
Los índices de texto no pueden mejorar el rendimiento de las operaciones de ordenamiento. Esta restricción se aplica tanto a los índices de texto de un solo campo como a los compuestos.
Índice de texto compuesto
Un índice compuesto puede incluir un campo de índice de texto combinado con claves de índice ascendentes y descendentes. Sin embargo, los índices de texto compuestos tienen estas restricciones:
Un índice de texto compuesto no puede incluir ningún otro tipo de índice especial, como campos de índice multiclave o geoespaciales.
Si el índice de texto compuesto incluye claves anteriores a la clave de índice de texto, para utilizar
$text, el predicado de la consulta debe incluir condiciones de coincidencia exacta en las claves anteriores.Cuando creas un índice de texto compuesto, todas las claves de índices de texto deben estar listadas adyacentes en el documento de especificación del índice.
Para ejemplos de índices de texto compuestos, consulta estas páginas:
Opción de intercalación
Los índices de texto solo admiten comparación binaria, y no admiten la opción de intercalación. La comparación binaria compara el valor Unicode numérico de cada carácter en cada string, y no considera las mayúsculas ni los signos diacríticos.
Para crear un índice de texto en una colección que tenga una intercalación no simple, debes especificar explícitamente { collation: { locale: "simple" } } al crear el índice.
Por ejemplo, considere una colección llamada "collationTest" con una intercalación de { locale: "en" }:
db.createCollection( "collationTest", { collation: { locale: "en" } } )
Para crear un índice de texto en la colección collationTest, debes especificar { collation: { locale: "simple" } }. El siguiente comando crea un índice de texto en el campo quotes:
db.collationTest.createIndex( { quotes: "text" }, { collation: { locale: "simple" } } )