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"
	}
]
>