MongoDB - Indexação

Os índices suportam a resolução eficiente de consultas. Sem índices, o MongoDB deve digitalizar todos os documentos de uma coleção para selecionar os documentos que correspondem à instrução de consulta. Essa varredura é altamente ineficiente e exige que o MongoDB processe um grande volume de dados.

Os índices são estruturas de dados especiais que armazenam uma pequena parte do conjunto de dados em uma forma fácil de percorrer. O índice armazena o valor de um campo específico ou conjunto de campos, ordenado pelo valor do campo conforme especificado no índice.

Método createIndex ()

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

Sintaxe

A sintaxe básica de createIndex() método é o seguinte ().

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

Aqui, a chave é o nome do campo no qual você deseja criar o índice e 1 é para ordem crescente. Para criar o índice em ordem decrescente, você precisa usar -1.

Exemplo

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

Dentro createIndex() método você pode passar vários campos, para criar o índice em vários campos.

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

Este método também aceita lista de opções (que são opcionais). A seguir está a lista -

Parâmetro Tipo Descrição
fundo boleano Constrói o índice em segundo plano para que a construção de um índice não bloqueie outras atividades do banco de dados. Especifique true para construir em segundo plano. o valor padrão éfalse.
único boleano Cria um índice exclusivo para que a coleção não aceite a inserção de documentos onde a chave ou as chaves do índice correspondem a um valor existente no índice. Especifique true para criar um índice exclusivo. o valor padrão éfalse.
nome corda O nome do índice. Se não for especificado, o MongoDB gera um nome de índice concatenando os nomes dos campos indexados e a ordem de classificação.
escasso boleano Se verdadeiro, o índice faz referência apenas a documentos com o campo especificado. Esses índices usam menos espaço, mas se comportam de maneira diferente em algumas situações (especialmente classificações). o valor padrão éfalse.
expireAfterSeconds inteiro Especifica um valor, em segundos, como um TTL para controlar por quanto tempo o MongoDB retém os documentos nesta coleção.
pesos documento O peso é um número que varia de 1 a 99.999 e denota a importância do campo em relação aos outros campos indexados em termos de pontuação.
idioma padrão corda Para um índice de texto, o idioma que determina a lista de palavras de parada e as regras para o lematizador e o tokenizer. o valor padrão éEnglish.
language_override corda Para um índice de texto, especifique o nome do campo no documento que contém, o idioma para substituir o idioma padrão. O valor padrão é o idioma.

O método dropIndex ()

Você pode eliminar um índice específico usando o método dropIndex () do MongoDB.

Sintaxe

A sintaxe básica do método DropIndex () é a seguinte ().

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

Aqui, a chave é o nome do arquivo no qual você deseja criar o índice e 1 é para ordem crescente. Para criar o índice em ordem decrescente, você precisa usar -1.

Exemplo

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

O método dropIndexes ()

Este método exclui vários índices (especificados) em uma coleção.

Sintaxe

A sintaxe básica do método DropIndexes () é a seguinte () -

>db.COLLECTION_NAME.dropIndexes()

Exemplo

Suponha que criamos 2 índices na coleção mycol nomeada como mostrado abaixo -

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

O exemplo a seguir remove os índices criados acima de mycol -

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

O 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

Suponha que criamos 2 índices na coleção mycol nomeada como mostrado abaixo -

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

O exemplo a seguir recupera todos os índices na 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"
	}
]
>