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