Indexes suportam a resolução eficiente de consultas. Sem índices, o MongoDB deve digitalizar cada documento de uma coleção para selecionar os documentos que correspondem à declaração da consulta. Esta varredura é altamente ineficiente e requer que o MongoDB processe um grande volume de dados.
Indexes são estruturas de dados especiais, que armazenam uma pequena porção do conjunto de dados em uma forma fácil de atravessar. O índice armazena o valor de um campo ou conjunto de campos específico, ordenado pelo valor do campo como especificado no índice.
O método createIndex()
Para criar um índice, você precisa usar o método createIndex() do MongoDB.
Sintaxe
A sintaxe básica do método createIndex() é a seguinte().
>db.COLLECTION_NAME.createIndex({KEY:1})
Aqui é o nome do campo no qual você quer criar índice e 1 é para ordem ascendente. Para criar índice em ordem decrescente você precisa usar -1.
Exemplo
>db.mycol.createIndex({"title":1}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"numIndexesAfter" : 2,"ok" : 1}>
No método createIndex() você pode passar múltiplos campos, para criar índice em múltiplos campos.
>db.mycol.createIndex({"title":1,"description":-1})>
Este método também aceita lista de opções (que são opcionais). Segue a lista –
Parameter | Type | Descrição |
---|---|---|
background | Boolean | Builds o índice em segundo plano para que a construção de um índice não bloqueie outras atividades da base de dados. Especifique verdadeiro para construir em segundo plano. O valor padrão é falso. |
unique | Boolean | Cria um índice único para que a coleção não aceite a inserção de documentos onde a chave ou chaves de índice correspondem a um valor existente no índice. Especifique true para criar um índice único. O valor padrão é falso. |
nome | string | O nome do índice. Se não especificado, MongoDB gera um nome de índice concatenando os nomes dos campos indexados e a ordem de ordenação. | sparse | Boolean | Se for verdade, o índice só faz referência a documentos com o campo especificado. Estes índices usam menos espaço, mas comportam-se de forma diferente em algumas situações (em particular, em tipos). O valor padrão é falso. |
expirarApósSegundos | integer | Especifica um valor, em segundos, como uma TTL para controlar quanto tempo o MongoDB retém documentos nesta coleção. |
pesos | documento | O peso é um número que varia de 1 a 99,999 e denota o significado do campo em relação aos outros campos indexados em termos de pontuação. |
língua_default | string | Para um índice de texto, a linguagem que determina a lista de palavras de parada e as regras para o stemmer e o tokenizer. O valor padrão é inglês. |
language_override | string | Para um índice de texto, especifique o nome do campo no documento que contém, o idioma para sobrescrever o idioma padrão. O valor padrão é language. |
O método dropIndex()
Você pode soltar um determinado índice 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 é o nome do arquivo no qual você quer criar índice e 1 é para ordem ascendente. Para criar í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 apaga múltiplos índices (especificados) em uma coleção.
Sintaxe
A sintaxe básica do método DropIndexes() é a seguinte() –
>db.COLLECTION_NAME.dropIndexes()
Exemplo
Passemos que criamos 2 índices na coleção chamada mycol, como mostrado abaixo –
> db.mycol.createIndex({"title":1,"description":-1})
O exemplo seguinte 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
O método getIndexes() é a sintaxe básica do método getIndexes() –
db.COLLECTION_NAME.getIndexes()
Exemplo
Passemos que criamos 2 índices no mycol chamado coleção como mostrado abaixo –
> db.mycol.createIndex({"title":1,"description":-1})
A seguir o exemplo recupera todos os índices da coleção mycol –
> db.mycol.getIndexes()>