Los índices soportan la resolución eficiente de las consultas. Sin índices, MongoDB debe escanear cada documento de una colección para seleccionar aquellos documentos que coinciden con la sentencia de la consulta. Esta exploración es altamente ineficiente y requiere que MongoDB procese un gran volumen de datos.
Los índices son estructuras de datos especiales, que almacenan una pequeña porción del conjunto de datos en una forma fácil de recorrer. El índice almacena el valor de un campo específico o un conjunto de campos, ordenado por el valor del campo especificado en el índice.
El método createIndex()
Para crear un índice, es necesario utilizar el método createIndex() de MongoDB.
Sintaxis
La sintaxis básica del método createIndex() es la siguiente().
>db.COLLECTION_NAME.createIndex({KEY:1})
Aquí la clave es el nombre del campo sobre el que se quiere crear el índice y el 1 es para el orden ascendente. Para crear el índice en orden descendente hay que usar -1.
Ejemplo
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
En el método createIndex() se pueden pasar múltiples campos, para crear el índice en múltiples campos.
>db.mycol.createIndex({"title":1,"description":-1})>
Este método también acepta lista de opciones (que son opcionales). A continuación se muestra la lista –
Parámetro | Tipo | Descripción |
---|---|---|
background | Boolean | Construye el índice en segundo plano para que la construcción de un índice no bloquee otras actividades de la base de datos. Especifique true para construir en segundo plano. El valor predeterminado es false. |
unique | Boolean | Crea un índice único para que la colección no acepte la inserción de documentos en los que la clave o claves del índice coincidan con un valor existente en el índice. Especifique true para crear un índice único. El valor por defecto es false. |
name | string | El nombre del índice. Si no se especifica, MongoDB genera un nombre de índice concatenando los nombres de los campos indexados y el orden de clasificación. | sparse | Boolean | Si es verdadero, el índice sólo hace referencia a documentos con el campo especificado. Estos índices utilizan menos espacio, pero se comportan de forma diferente en algunas situaciones (especialmente en las ordenaciones). El valor por defecto es false. |
expireAfterSeconds | integer | Especifica un valor, en segundos, como TTL para controlar cuánto tiempo retiene MongoDB los documentos de esta colección. |
pesos | documento | El peso es un número que va de 1 a 99.999 y denota la importancia del campo en relación con los otros campos indexados en términos de puntuación. |
idioma_por_defecto | cadena | Para un índice de texto, el idioma que determina la lista de palabras de parada y las reglas para el stemmer y el tokenizer. El valor por defecto es English. |
language_override | string | Para un índice de texto, especifique el nombre del campo en el documento que contiene, el idioma para anular el idioma por defecto. El valor por defecto es language. |
El método dropIndex()
Puede eliminar un índice particular utilizando el método dropIndex() de MongoDB.
Sintaxis
La sintaxis básica del método DropIndex() es la siguiente().
>db.COLLECTION_NAME.dropIndex({KEY:1})
Aquí la clave es el nombre del fichero sobre el que se quiere crear el índice y el 1 es para el orden ascendente. Para crear el índice en orden descendente hay que usar -1.
Ejemplo
> db.mycol.dropIndex({"title":1}){"ok" : 0,"errmsg" : "can't find index with key: { title: 1.0 }","code" : 27,"codeName" : "IndexNotFound"}
El método dropIndexes()
Este método borra múltiples índices (especificados) en una colección.
Sintaxis
La sintaxis básica del método DropIndexes() es la siguiente() –
>db.COLLECTION_NAME.dropIndexes()
Ejemplo
Supongamos que hemos creado 2 índices en la colección denominada mycol como se muestra a continuación
> db.mycol.createIndex({"title":1,"description":-1})
El siguiente ejemplo elimina los índices creados anteriormente de mycol –
>db.mycol.dropIndexes({"title":1,"description":-1}){ "nIndexesWas" : 2, "ok" : 1 }>
El método getIndexes()
Este método devuelve la descripción de todos los índices int la colección.
Sintaxis
La siguiente es la sintaxis básica del método getIndexes() –
db.COLLECTION_NAME.getIndexes()
Ejemplo
Supongamos que hemos creado 2 índices en la colección denominada mycol como se muestra a continuación –
> db.mycol.createIndex({"title":1,"description":-1})
El siguiente ejemplo recupera todos los índices de la colección mycol –
> db.mycol.getIndexes()>