MongoDB - Indexación
Los índices apoyan la resolución eficiente de consultas. Sin índices, MongoDB debe escanear todos los documentos de una colección para seleccionar aquellos documentos que coincidan con la declaración de consulta. Este análisis es muy ineficaz y requiere que MongoDB procese un gran volumen de datos.
Los índices son estructuras de datos especiales que almacenan una pequeña parte 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, ordenados por el valor del campo como se especifica en el índice.
El método createIndex ()
Para crear un índice, debe utilizar el método createIndex () de MongoDB.
Sintaxis
La sintaxis básica de createIndex() El método es el siguiente ().
>db.COLLECTION_NAME.createIndex({KEY:1})
Aquí la clave es el nombre del campo en el que desea crear el índice y 1 es para el orden ascendente. Para crear un índice en orden descendente, debe usar -1.
Ejemplo
>db.mycol.createIndex({"title":1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
>
En createIndex() método puede pasar varios campos, para crear un índice en varios campos.
>db.mycol.createIndex({"title":1,"description":-1})
>
Este método también acepta una lista de opciones (que son opcionales). A continuación se muestra la lista:
Parámetro | Tipo | Descripción |
---|---|---|
antecedentes | Booleano | Crea el índice en segundo plano para que la creación de un índice no bloquee otras actividades de la base de datos. Especifique verdadero para construir en segundo plano. El valor predeterminado esfalse. |
único | Booleano | Crea un índice único para que la colección no acepte la inserción de documentos donde la clave o claves de índice coinciden con un valor existente en el índice. Especifique verdadero para crear un índice único. El valor predeterminado esfalse. |
nombre | cuerda | 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. |
escaso | Booleano | Si es verdadero, el índice solo hace referencia a documentos con el campo especificado. Estos índices utilizan menos espacio pero se comportan de manera diferente en algunas situaciones (en particular, en los tipos). El valor predeterminado esfalse. |
expireAfterSeconds | entero | Especifica un valor, en segundos, como TTL para controlar cuánto tiempo MongoDB retiene 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 la puntuación. |
idioma predeterminado | cuerda | Para un índice de texto, el idioma que determina la lista de palabras vacías y las reglas para el lematizador y el tokenizador. El valor predeterminado esEnglish. |
language_override | cuerda | Para un índice de texto, especifique el nombre del campo en el documento que contiene el idioma para reemplazar el idioma predeterminado. El valor predeterminado es el idioma. |
El método dropIndex ()
Puede eliminar un índice en 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 archivo en el que desea crear el índice y 1 es para el orden ascendente. Para crear un índice en orden descendente, debe 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 elimina varios índices (especificados) en una colección.
Sintaxis
La sintaxis básica del método DropIndexes () es la siguiente () -
>db.COLLECTION_NAME.dropIndexes()
Ejemplo
Suponga que hemos creado 2 índices en la colección mycol nombrada como se muestra a continuación:
> db.mycol.createIndex({"title":1,"description":-1})
El siguiente ejemplo elimina los índices de mycol creados anteriormente:
>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 de la colección.
Sintaxis
A continuación se muestra la sintaxis básica del método getIndexes ():
db.COLLECTION_NAME.getIndexes()
Ejemplo
Suponga que hemos creado 2 índices en la colección mycol nombrada 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()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "test.mycol"
},
{
"v" : 2,
"key" : {
"title" : 1,
"description" : -1
},
"name" : "title_1_description_-1",
"ns" : "test.mycol"
}
]
>