Tutorial de indexação MongoDB – exemplo createIndex(), dropindex()

Os índices são muito importantes em qualquer banco de dados e com o MongoDB não é diferente. Com o uso de Índices, a realização de consultas no MongoDB torna-se mais eficiente.

Se você tivesse uma coleção com milhares de documentos sem índices e depois consultasse para encontrar determinados documentos, nesse caso o MongoDB precisaria digitalizar toda a coleção para encontrar os documentos. Mas se você tivesse índices, o MongoDB usaria esses índices para limitar o número de documentos que deveriam ser pesquisados ​​na coleção.

Os índices são conjuntos de dados especiais que armazenam uma parte parcial dos dados da coleção. Como os dados são parciais, fica mais fácil ler esses dados. Este conjunto parcial armazena o valor de um campo específico ou um conjunto de campos ordenados pelo valor do campo.

Compreendendo o impacto dos índices

Agora, embora desde a introdução tenhamos visto que os índices são bons para consultas, ter muitos índices pode retardar outras operações, como a operação Inserir, Excluir e Atualizar.

Se houver operações frequentes de inserção, exclusão e atualização realizadas em documentos, os índices precisariam ser alterados com frequência, o que seria apenas uma sobrecarga para a coleção.

O exemplo abaixo mostra quais valores de campo podem constituir um índice em uma coleção. Um índice pode ser baseado em apenas um campo da coleção ou em vários campos da coleção.

No exemplo abaixo, Employeeid “1” e EmployeeCode “AA” são utilizados para indexar os documentos da coleção. Assim, quando for feita uma pesquisa de consulta, esses índices serão utilizados para encontrar de forma rápida e eficiente os documentos necessários no acervo.

Portanto, mesmo que a consulta de pesquisa seja baseada no EmployeeCode “AA”, esse documento será retornado.

Compreendendo o impacto dos índices

Como criar índices: createIndex()

A criação de um índice no MongoDB é feita usando o “criarIndex”.

O seguintewing O exemplo mostra como adicionar índice à coleção. Vamos supor que temos nossa mesma coleção Employee que possui os nomes de campo “Employeeid” e “EmployeeName”.

Criar índices: createIndex()

db.Employee.createIndex({Employeeid:1})

Explicação do código:

  1. A criarIndex O método é usado para criar um índice baseado no “Employeeid” do documento.
  2. O parâmetro '1' indica que quando o índice for criado com os valores do Campo “Employeeid”, eles deverão ser ordenados em ordem crescente. Observe que isso é diferente do campo _id (o campo id é usado para identificar exclusivamente cada documento na coleção) que é criado automaticamente na coleção pelo MongoDB. Os documentos agora serão classificados de acordo com o campo Employeeid e não com o campo _id.

Se o comando for executado com sucesso, o seguintewing A saída será mostrada:

Saída:

Criar índices: createIndex()

  1. O numIndexesBefore: 1 indica o número de valores de campo (os campos reais na coleção) que estavam nos índices antes da execução do comando. Lembre-se de que cada coleção possui o campo _id que também conta como um valor de campo para o índice. Como o campo de índice _id faz parte da coleção quando é criado inicialmente, o valor de numIndexesBefore é 1.
  2. O numIndexesAfter: 2 indica o número de valores de campo que estavam nos índices após a execução do comando.
  3. Aqui, a saída “ok: 1” especifica que a operação foi bem-sucedida e o novo índice é adicionado à coleção.

O código acima mostra como criar um índice baseado em um valor de campo, mas também é possível criar um índice baseado em vários valores de campo.

O seguintewing um exemplo mostra como isso pode ser feito;

Criar índices: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

Explicação do código:

  • O método createIndex agora leva em consideração vários valores de campo que agora farão com que o índice seja criado com base em “Employeeid” e “EmployeeName”. O Employeeid:1 e EmployeeName:1 indicam que o índice deve ser criado nesses 2 valores de campo com :1 indicando que deve estar em ordem crescente.

Como encontrar índices: getindexes()

Encontrar um índice no MongoDB é feito usando o “obter índices” método.

O seguintewing um exemplo mostra como isso pode ser feito;

Encontre índices: getindexes()

db.Employee.getIndexes()

Explicação do código:

  • O método getIndexes é usado para localizar todos os índices em uma coleção.

Se o comando for executado com sucesso, o seguintewing A saída será mostrada:

Saída:

Encontre índices: getindexes()

  • A saída retorna um documento que mostra apenas que existem 2 índices na coleção que é o campo _id e o outro é o campo Employee id. O :1 indica que os valores dos campos no índice são criados em ordem crescente.

Como descartar índices: dropindex()

A remoção de um índice no MongoDB é feita usando o método dropIndex.

O seguintewing um exemplo mostra como isso pode ser feito;

Índices de queda: dropindex()

db.Employee.dropIndex(Employeeid:1)

Explicação do código:

  • O método dropIndex pega os valores de campo necessários que precisam ser removidos do índice.

Se o comando for executado com sucesso, o seguintewing A saída será mostrada:

Saída:

Índices de queda: dropindex()

  1. O nIndexesWas: 3 indica o número de valores de campo que estavam nos índices antes da execução do comando. Lembre-se de que cada coleção possui o campo _id que também conta como um valor de campo para o índice.
  2. A saída ok: 1 especifica que a operação foi bem-sucedida e o campo “Employeeid” é removido do índice.

Para remover todos os índices da coleção de uma vez, pode-se usar o comando dropIndexes.

O seguintewing exemplo mostra como isso pode ser feito.

Índices de queda: dropindex()

db.Employee.dropIndex()

Explicação do código:

  • O método dropIndexes eliminará todos os índices, exceto o índice _id.

Se o comando for executado com sucesso, o seguintewing A saída será mostrada:

Saída:

Índices de queda: dropindex()

  1. O nIndexesWas: 2 indica o número de valores de campo que estavam nos índices antes da execução do comando.
  2. Lembre-se novamente que cada coleção possui o campo _id que também conta como um valor de Campo para o índice, e que não será removido por MongoDB e é isso que esta mensagem indica.
  3. A saída ok: 1 especifica que a operação foi bem-sucedida.

Resumo

  • Definir índices é importante para uma segurança mais rápida e eficientearchide documentos em uma coleção.
  • Os índices podem ser criados usando o método createIndex. Os índices podem ser criados em apenas um campo ou em vários valores de campo.
  • Os índices podem ser encontrados usando o método getIndexes.
  • Os índices podem ser removidos usando dropIndex para índices únicos ou dropIndexes para eliminar todos os índices.