No MongoDB, um índice é uma estrutura de dados especial que melhora a velocidade das operações de consulta em uma coleção. Índices armazenam uma pequena parte dos dados da coleção em uma forma fácil de percorrer, sendo assim, em vez de escanear toda a coleção para encontrar os documentos que correspondem à consulta, o MongoDB pode usar o índice para encontrar os resultados de maneira muito mais rápida.
Tipos de Índices no MongoDB
- Índice Padrão (_id):
- Por padrão, o MongoDB cria um índice único no campo
_id
de cada coleção.
- Por padrão, o MongoDB cria um índice único no campo
- Índices de Campo Único:
- Índices em um único campo de uma coleção.
- Exemplo:
db.collection.createIndex({ nomeDoCampo: 1 })
1
indica ordem crescente.-1
indica ordem decrescente.
- Índices Combinados:
- Índices em múltiplos campos de uma coleção.
- Exemplo:
db.collection.createIndex({ campo1: 1, campo2: -1 })
- Índices de Texto:
- Usados para realizar buscas textuais em strings.
- Exemplo:
db.collection.createIndex({ nomeDoCampo: "text" })
- Índices GeoEspaciais:
- Usados para consultas geoespaciais.
- Exemplo:
db.collection.createIndex({ localizacao: "2dsphere" })
- Índices de Hash:
- Usados para distribuição uniforme de dados.
- Exemplo:
db.collection.createIndex({ nomeDoCampo: "hashed" })
Como Criar Índices
Para criar um índice, você usa o método createIndex
:
db.collection.createIndex({ campo: 1 }) // Índice em ordem crescente
db.collection.createIndex({ campo: -1 }) // Índice em ordem decrescente
Como Usar Índices
1. Criação de Índices
// Índice em um único campo
db.usuarios.createIndex({ nome: 1 })
// Índice em múltiplos campos
db.usuarios.createIndex({ nome: 1, idade: -1 })
2. Visualizar Índices
Para ver os índices de uma coleção, você pode usar o método getIndexes
:
db.usuarios.getIndexes()
3. Remover Índices
Para remover um índice, use o método dropIndex
:
db.usuarios.dropIndex({ nome: 1 })
Exemplos Práticos
- Consulta Otimizada com Índice
Sem índice:
db.usuarios.find({ nome: "João" })
Com índice:
db.usuarios.createIndex({ nome: 1 })
db.usuarios.find({ nome: "João" })
- Consultas Textuais
Criar um índice de texto:
db.usuarios.createIndex({ descricao: "text" })
Realizar uma consulta textual:
db.usuarios.find({ $text: { $search: "desenvolvedor" } })
Considerações
- Desempenho de Escrita vs. Leitura: Índices podem melhorar a performance de leitura, mas podem degradar a performance de escrita (inserções, atualizações, exclusões) porque o índice também precisa ser atualizado.
- Armazenamento: Índices consomem espaço adicional no disco.
- Escolha de Índices: Escolher quais índices criar depende das consultas mais comuns que você realiza em sua coleção. Avaliar o uso dos índices pode ser feito com a ferramenta
explain()
que mostra como o MongoDB executa uma consulta.
Utilizar índices de forma adequada pode melhorar significativamente a performance das consultas no MongoDB.
Quer aprender umto mais sobre MongoDB, basta assistir nossa incrível playlist MongoDB: Do básico ao avançado.
Super Dicas
Venha conhecer os nossos cursos da Hotmart Clube e Udemy.
Se inscreva em nosso canal, compartilhe as matérias que gostar com os seus colegas, e participe da nossa comunidade no Telegram.
Aproveite também e venha fazer parte do nosso clube de vantagens e ter acesso exclusivo a vídeos, tutoriais, cursos e muito mais. Clique no link para se tornar um membro do dfilitto – clube de vantagens e ter acesso a todos os benefícios do nosso clube.