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

Índices MongoDB

O índice suporta a análise eficiente de consultas. Sem índice, o MongoDB deve escanear cada documento do conjunto para escolher os documentos que correspondem à declaração de consulta. Essa varredura é muito eficiente e requer que o MongoDB processe uma grande quantidade de dados.
Um índice é uma estrutura de dados especial que armazena uma pequena parte do conjunto de dados de forma fácil de percorrer. O índice armazena os valores de campos específicos ou conjuntos de campos, ordenados conforme especificado no índice.

Método createIndex()

Para criar um índice, você precisa usar o método createIndex() do MongoDB.

Sintaxe

createIndex()A sintaxe básica do método é como follows()

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

Aqui, KEY é o nome do campo no qual você deseja criar o índice1-1。

Exemplo

>db.mycol.createIndex({"title":1}
{
	"createdCollectionAutomatically": false,
	"numIndexesBefore": 1,
	"numIndexesAfter": 2,
	"ok": 1
}
>

EmcreateIndex()No método, você pode passar vários campos para criar índices em vários campos.

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

O método createIndex() aceita parâmetros opcionais, a lista de parâmetros opcionais é a seguinte:

ParâmetrosTipoDescrição
backgroundBooleanO processo de criação de índice pode bloquear outras operações do banco de dados. O parâmetro "background" pode especificar a criação de índice em segundo plano, ou seja, adicionar "background"   Parâmetro opcional. "background" O valor padrão éfalse
uniqueBooleanSe o índice criado é único. Especificar true cria um índice único. O valor padrão éfalse.
namestringO nome do índice. Se não for especificado, o MongoDB gera um nome de índice através do nome do campo de conexão do índice e da ordem de classificação.
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()方法删除特定索引。

Sintaxe

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

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

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

Exemplo

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

dropIndexes()方法

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

Sintaxe

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

>db.COLLECTION_NAME.dropIndexes()

Exemplo

假设我们在命名 mycol 的集合中创建了2índices, conforme mostrado a seguir-

> 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 retorna a descrição de todos os índices da coleção.

Sintaxe

A seguir está a sintaxe básica do método getIndexes()-

db.COLLECTION_NAME.getIndexes()

Exemplo

Supondo que tenhamos criado2índices, conforme mostrado a seguir-

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

A seguir, um exemplo de recuperação de todos os índices da coleção 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"
	}
]
>