English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Índices MongoDB

El índice admite la resolución eficiente de consultas. Sin índice, MongoDB debe escanear cada documento en la colección para seleccionar los documentos que coinciden con la consulta, lo cual es muy ineficiente y requiere que MongoDB procese grandes cantidades de datos.
Un índice es una estructura de datos especial que almacena una pequeña parte de un conjunto de datos en una forma fácil de navegar. El índice almacena valores específicos de campo o conjunto de campos y los ordena según el campo especificado en el índice.

Método createIndex()

Para crear un índice, debe usar el método createIndex() de MongoDB.

Sintaxis

createIndex()La sintaxis básica del método es la siguiente().

>db.COLLECTION_NAME.createIndex({KEY:1}

Aquí, KEY es el nombre del campo en el que se creará el índice,1representa 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
}
>

EncreateIndex()En el método, puede pasar varios campos para crear índices en varios campos.

>db.mycol.createIndex({"title":1,"description":-1}
>

createIndex() recibe parámetros opcionales, la lista de parámetros opcionales es la siguiente:

ParámetrosTipoDescripción
backgroundBooleanEl proceso de creación de índices puede bloquear otras operaciones de base de datos. El parámetro "background" permite crear índices en modo de fondo, es decir, agregar "background"   Parámetro opcional. "background" El valor predeterminado esfalse
uniqueBooleanSi el índice creado es único. Se crea un índice único al especificar true. El valor predeterminado esfalse.
namestringEl nombre del índice. Si no se especifica, MongoDB genera un nombre de índice a través del nombre del campo del índice y el orden de clasificación de la conexión.
dropDupsBoolean3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

dropIndex()方法

您可以使用MongoDB的dropIndex()方法删除特定索引。

Sintaxis

DropIndex() 方法的基本语法如下()。

>db.COLLECTION_NAME.dropIndex({KEY:1}

此处的 key 是您要在其上创建索引的文件的名称,而1表示升序。要以降序创建索引,您需要使用 -1。

Ejemplo

> db.mycol.dropIndex({"title":1}
{
	"ok" : 0,
	"errmsg" : "can't find index with key: { title: 1.0 }
	"code" : 27,
	"codeName" : "IndexNotFound"
}

dropIndexes()方法

此方法删除集合上的多个(指定)索引。

Sintaxis

DropIndexes()方法的基本语法如下()。-

>db.COLLECTION_NAME.dropIndexes()

Ejemplo

假设我们在命名 mycol 的集合中创建了2Índices, como se muestra a continuación-

> db.mycol.createIndex({"title":1,"description":-1}

以下示例删除了上面创建的mycol索引:

>db.mycol.dropIndexes({"title":1,"description":-1}
{ "nIndexesWas" : 2, "ok" : 1 }
>

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

Supongamos que hemos creado2Índices, como se muestra a continuación-

> db.mycol.createIndex({"title":1,"description":-1}

A continuación se muestra un ejemplo de búsqueda de 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"
	}
]
>