Visão geral
Neste guia, você pode aprender como usar índices com o driver Kotlin Sync. Os índices podem melhorar a eficiência das queries e adicionar funcionalidade à consulta e ao armazenamento de documentos.
Sem índices, o MongoDB deve digitalizar todos os documentos em uma collection para encontrar os documentos que correspondem a cada query. Essas verificações da collection são lentas e podem afetar negativamente o desempenho do seu aplicativo. No entanto, se existir um índice apropriado para uma query, o MongoDB poderá usar o índice para limitar os documentos que deve inspecionar.
Para saber mais sobre os critérios que sua query deve atender para retornar resultados diretamente de um índice, consulte a seçãoquery coberta no manual do MongoDB Server .
Considerações operacionais
Para melhorar o desempenho da query, crie índices em campos que aparecem com frequência nas queries e operações do seu aplicativo que retornam resultados ordenados. Cada índice adicionado consome espaço em disco e memória quando ativo, portanto, pode ser necessário rastrear a memória do índice e o uso do disco para o planejamento da capacidade. Além disso, quando uma operação de gravação atualiza um campo indexado, MongoDB também atualiza o índice relacionado.
Como o MongoDB oferece suporte a esquemas dinâmicos, os aplicativos podem executar consulta dos campos cujos nomes não podem ser conhecidos antecipadamente ou são arbitrários. Os índices curinga ajudam a suportar essas queries, mas não são projetados para substituir o planejamento de índice baseado em volume de trabalho.
Para obter mais informações sobre como projetar o modelo de dados e escolher os índices apropriados para o seu aplicação, consulte a documentação do servidor sobre Estratégias de indexação e Modelagem de dados e índices.
Tipos de índice
O MongoDB fornece vários tipos de índice diferentes para auxiliar na consulta de seus dados. Você pode criar um índice chamando o método createIndex()
em uma collection e passando uma definição de índice como um argumento.
As seções a seguir descrevem os tipos de índice mais comuns e fornecem código de amostra para criar cada tipo de índice.
Observação
Os exemplos nesta página utilizam as sample_mflix.movies
sample_mflix.theaters
collections e dos conjuntos de dados de amostra do Atlas . Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de exemplo, consulte Introdução ao Driver Kotlin Sync.
Para saber mais sobre os diferentes tipos de índice, consulte Tipos de índice no manual do MongoDB Server .
Índice de campo único
O exemplo seguinte cria um índice ascendente no campo especificado:
collection.createIndex(Indexes.ascending("<field name>"))
Para saber mais sobre índices de campo único, consulte Índices de campo único no manual do MongoDB Server .
Índice composto
O exemplo seguinte cria um índice composto nos campos especificados:
collection.createIndex(Indexes.ascending("<field name 1>", "<field name 2>"))
Para saber mais sobre índices compostos, consulte Índices compostos no manual do MongoDB Server .
Multikey Index
O exemplo a seguir cria um índice de múltiplas chaves no campo com valor de array especificado:
collection.createIndex(Indexes.ascending("<array field name>"))
Para saber mais sobre índices de várias chaves, consulte Índices de várias chaves no manual do MongoDB Server .
Índices clusterizados
O exemplo seguinte cria uma nova coleção com um índice agrupado no campo _id
:
val clusteredIndexOptions = ClusteredIndexOptions( Indexes.ascending("_id"), true ) val collection = database.createCollection("<collection name>", clusteredIndexOptions)
Para saber mais sobre coleções e índices agrupados, consulte Coleções agrupadas no manual do MongoDB Server .
Text Index
O exemplo seguinte cria um índice de texto no campo de string especificado:
collection.createIndex(Indexes.text("<field name>"))
Índice Geoespacial
O exemplo seguinte cria um índice 2dsphere
no campo especificado que contém objetos GeoJSON:
collection.createIndex(Indexes.geo2dsphere("<GeoJSON object field>"))
Para saber mais sobre índices geoespaciais, consulte Índices geoespaciais no manual do MongoDB Server .
índice único
O exemplo seguinte cria um índice único no campo especificado:
val indexOptions = IndexOptions().unique(true) collection.createIndex(Indexes.ascending("<field name>"), indexOptions)
Para saber mais sobre índices únicos, consulte Índices únicos no manual do MongoDB Server .
Índice curinga
O exemplo seguinte cria um índice curinga na coleção especificada:
collection.createIndex(Indexes.ascending("$**"))
Para saber mais sobre índices curinga, consulte Índices curinga no manual do MongoDB Server .
Excluir um índice.
Você pode excluir índices utilizando o método dropIndex()
em uma coleção, como mostrado no seguinte exemplo:
collection.dropIndex("<index name>")