MongoDB es una base de datos NoSQL basada en documentos. Como los datos se almacenan en el formato del documento, puede contener una gran cantidad de datos y, dado que es un tipo de base de datos NoSQL, no existe una necesidad estricta de tener relaciones de integridad referencial. Por lo tanto, la búsqueda es un criterio importante aquí y para eso MongoDB proporciona índices de texto para admitir consultas de búsqueda de texto, especialmente en contenido de strings. Los índices de texto deben ser una string o una array de elementos de string.
¿Cómo crear índices de texto?
En MongoDB, podemos crear índices de texto usando el método db.collectionName.createIndex(). Entonces, para indexar un campo que contiene una string o una array de elementos de string, pase un documento en el método createIndex() que contenga el campo y la string literal (es decir, «texto»). Con este método, puede indexar varios campos para el índice de texto. Además, un índice compuesto puede contener una clave de índice de texto en combinación con una clave de índice ascendente y descendente. Y si desea colocar un índice de texto, simplemente use el nombre del índice.
Sintaxis:
db.nombreColección.createIndex( { campo: “texto” } )
Ejemplo:
Base de datos: ggf
Colección: publicaciones de estudiantes
Documentos: Dos documentos
Ahora, vamos a crear un índice de texto en el campo «título» de la colección «studentsposts» para buscar dentro de la colección.
db.studentsposts.createIndex({title: "text"})
Ahora veremos cómo buscar usando Text Index:
db.studentsposts.find({$text:{$search: "mongodb"}}).pretty()
La salida se explica por sí misma arriba, ya que hemos creado un índice en el campo «título» y hemos intentado buscar el texto «mongodb». Está presente en ambos documentos en el campo «título». Por lo tanto, el resultado es 2 documentos aquí.
Índice de caída
A veces, también puede haber necesidades para eliminar los índices de texto, ya que se crearon incorrectamente o deben modificarse de una manera diferente o desean eliminarlos por completo. Entonces, usando el método db.collection.dropIndex() podemos eliminar el índice de texto. Este método elimina el índice especificado de la colección dada.
Sintaxis:
db.collection.dropIndex("TextIndex")
Ejemplo:
Primero, encontramos el índice del campo.
db.studentsposts.getIndexes()
Ahora soltamos el índice de texto usando el método dropIndex().
db.studentsposts.dropIndex("title_text")
Especificar pesos
Para un índice de texto, el peso de un campo indexado es la importancia del campo. En MongoDB, para cada campo de índice del documento, MongoDB suma los resultados multiplicando el número de coincidencias por peso. Ahora, utilizando esta suma, MongoDB calcula la puntuación del documento. El peso predeterminado del campo de índice es 1 y puede ajustar el peso del índice usando el método createIndex().
Ejemplo:
db.studentsposts.createIndex({title:"text", tags:"text"}, {weights:{title:10, tags:5}, name:"TextIndex"})
Aquí, el peso del campo de título y etiquetas es 10 y 5.
Índice comodín
Usando el especificador comodín ($**) puede crear múltiples campos de índices de texto. Debido al índice de texto comodín, MongoDB indexa todos y cada uno de los campos que contienen datos de string en todos los documentos presentes en la colección dada. El índice de texto comodín es útil para datos no estructurados donde no sabemos qué campo contiene datos de string o para consultas ad-hoc. Permitió buscar texto en todos los campos que contienen datos de string. El índice de texto salvaje puede ser parte del índice compuesto.
Ejemplo:
db.studentsposts.createIndex( { "$**": "text" } )
Aquí, creamos los índices de texto usando un especificador comodín.
Ahora, veremos todos los índices presentes en la colección de publicaciones de estudiantes.
Limitaciones
- Se permite como máximo un índice de texto por colección
- Con la expresión de consulta de $texto, no podemos usar la sugerencia()
- Juntos, Text Index y Sort no pueden dar los resultados requeridos. Las operaciones de clasificación no pueden utilizar la ordenación en el índice de texto.
- El índice compuesto no puede incluir campos de índice geoespacial o de clave múltiple.
Publicación traducida automáticamente
Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA