Overview
En esta guía, puedes aprender a usar índices con el controlador Sync de Kotlin. Los índices pueden mejorar la eficiencia de las queries y agregar funcionalidad a la query y almacenamiento de documentos.
Sin índices, MongoDB debe escanear cada documento en una colección para encontrar los documentos que coinciden con cada query. Estos escaneos de colección son lentos y pueden afectar negativamente el rendimiento de tu aplicación. Sin embargo, si existe un índice apropiado para una query, MongoDB puede usar el índice para limitar los documentos que debe inspeccionar.
Para conocer los criterios que debe cumplir tu query para devolver resultados directamente desde un índice, consulta Covered query sección en el manual del servidor MongoDB.
Consideraciones operativas
Para mejorar el rendimiento de las consultas, construye índices en los campos que aparecen con frecuencia en las consultas de la aplicación y en operaciones que devuelven resultados ordenados. Cada índice que agregues consume espacio en disco y memoria cuando está activo, por lo que podría ser necesario rastrear el uso de memoria y disco del índice para la planificación de capacidad. Además, cuando una operación de escritura actualiza un campo indexado, MongoDB también actualiza el índice relacionado.
Como MongoDB es compatible con esquemas dinámicos, las aplicaciones pueden consultar campos cuyos nombres no se pueden conocer con anticipación o son arbitrarios. Índices comodín ayudan a dar soporte a estas consultas, pero no están diseñados para reemplazar la planificación de índices basada en cargas de trabajo.
Para obtener más información sobre cómo diseñar tu modelo de datos y elegir los índices adecuados para tu aplicación, consulta la documentación del Servidor en Estrategias de indexación y Crear índices para respaldar tus consultas.
Tipos de índice
MongoDB proporciona diversos tipos de índices para facilitar la consulta de datos. Puedes crear un índice llamando a la
createIndex() método en una colección y pasar una definición de índice como argumento.
Las siguientes secciones describen los tipos de índices más comunes y proporcionan código de muestra para crear cada tipo de índice.
Nota
Los ejemplos en esta página utilizan las colecciones sample_mflix.movies y sample_mflix.theaters de los conjuntos de datos de muestra Atlas. Para aprender cómo crear una implementación gratuita de MongoDB y cargar conjuntos de datos de muestra, consulta Comienza con el controlador de sincronización de Kotlin.
Para obtener más información sobre los diferentes tipos de índice, consulte Tipos de Índice en el manual de MongoDB Server.
Índice de un solo campo
El siguiente ejemplo crea un índice ascendente en el campo especificado:
collection.createIndex(Indexes.ascending("<field name>"))
Para aprender más sobre los índices de campo único, consulta Índices de campo único en el manual de MongoDB Server.
Índice compuesto
El siguiente ejemplo crea un índice compuesto en los campos especificados:
collection.createIndex(Indexes.ascending("<field name 1>", "<field name 2>"))
Para saber más sobre los índices compuestos, consulta Índices Compuestos en el manual del MongoDB Server.
Multikey Index
El siguiente ejemplo crea un índice de varias claves en el campo especificado que tiene valores de arreglo:
collection.createIndex(Indexes.ascending("<array field name>"))
Para saber más sobre los índices multiclave, consulta Índices multiclave en el manual del MongoDB Server.
Índice del clúster
El siguiente ejemplo crea una nueva colección con un "/índice clustered/" en el campo _id:
val clusteredIndexOptions = ClusteredIndexOptions( Indexes.ascending("_id"), true ) val collection = database.createCollection("<collection name>", clusteredIndexOptions)
Para obtener más información sobre colecciones con índice clusterizado e índices, consulta Colecciones con índice clusterizado en el manual del MongoDB Server.
Text Index
El siguiente ejemplo crea un índice de texto en el campo de string especificado:
collection.createIndex(Indexes.text("<field name>"))
Índice geoespacial
El siguiente ejemplo crea un índice 2dsphere en el campo especificado que contiene objetos GeoJSON:
collection.createIndex(Indexes.geo2dsphere("<GeoJSON object field>"))
Para obtener más información sobre los índices geoespaciales, consulta Índices geoespaciales en el manual del servidor de MongoDB.
índice único
El siguiente ejemplo crea un índice único en el campo especificado:
val indexOptions = IndexOptions().unique(true) collection.createIndex(Indexes.ascending("<field name>"), indexOptions)
Para aprender más sobre los índices únicos, consulta Índices Únicos en el manual de MongoDB Server.
índice comodín
El siguiente ejemplo crea un índice comodín en la colección especificada:
collection.createIndex(Indexes.ascending("$**"))
Para obtener más información sobre los índices comodín, consulta Índices comodín en el manual del servidor MongoDB.
Borrar un Índice
Puedes borrar índices utilizando el método dropIndex() en una colección, como se muestra en el siguiente ejemplo:
collection.dropIndex("<index name>")