Puntos clave: Los índices de MongoDB mejoran la velocidad de recuperación de datos, permitiendo una consulta eficiente al minimizar el escaneo de documentos. La guía detalla varios tipos de índices, métodos de creación y consideraciones de rendimiento.
- Los tipos de índice incluyen índices de campo único, compuestos, multiclave, geoespaciales, de texto y hash.
- Los índices únicos y dispersos mantienen la integridad de los datos y optimizan el almacenamiento.
Los índices de MongoDB ofrecen a los usuarios una forma eficiente de consultar datos. Al consultar datos sin índices, la consulta tendrá que buscar todos los registros dentro de una base de datos para encontrar datos que coincidan con la consulta.
En MongoDB, consultar sin índices se está llamado escaneo de colección. Un escaneo de colección:
- Resultan en varios cuellos de botella en el rendimiento
- Ralentiza significativamente tu solicitud
Afortunadamente, usar índices de MongoDB soluciona ambos problemas. Al limitar el número de documentos a consultar, te mejorará el rendimiento general de la aplicación.
En este tutorial, te guiaré por diferentes tipos de índices y te mostraré cómo Crea, encontrar y gestionar índices en MongoDB.
¿Qué son los índices en MongoDB?
Los índices de MongoDB son estructuras de datos especiales que Haz más rápido consultar una base de datos. Aceleran la búsqueda y recuperación de datos al almacenar una pequeña parte del conjunto de datos de forma eficiente — no te obligas a escanear cada documento de una colección de datos.
Los índices de MongoDB almacena los valores de los campos indexados fuera de la colección de datos y llevan un registro de su ubicación en el disco. Los campos indexados son ordenan por los valores. Esto facilita realizar coincidencias de igualdad y Haz consultas basadas en rangos de forma eficiente. te puede Define índices de MongoDB a nivel de colección, ya que los índices de cualquier campo o subcampo de una colección son soportados.
te puedes gestiona los índices de tus colecciones de datos usando tanto la CLI de Atlas como la interfaz de usuario de Atlas. Ambas Haz la ejecución de consultas más eficiente.
¿Por qué necesitamos índices en MongoDB?
Los índices son invaluables en MongoDB. son una forma eficiente de organizar la información en una colección y aceleran las consultas, devolviendo resultados relevantes más rápido. Al usar un índice para agrupar, ordenar y recuperar datos, te ahorrar un tiempo considerable. Tu motor de base de datos ya no necesita filtrar cada registro para encontrar coincidencias.
¿Cuáles son las desventajas de la indexación?
La indexación tiene algunos inconvenientes. El rendimiento en escrituras están afectado por cada te Crea de índice, y cada una ocupa espacio en disco. Para evitar el sobrevolumen de la colección y escrituras lentas, solo Crea indexar que son realmente necesario.
¿Cuántos índices pueden te utiliza?
Los índices de MongoDB son limitados a 64 por recogida de datos. En un índice compuesto, te solo puede tener 32 campos. La consulta $text requiere un índice de texto especial — te no puede combinarlo con otro operador de consulta que requiera otro tipo de índice especial.
Trabajo con índices
Para este tutorial, vamos a utilizar el siguiente conjunto de datos para demostrar la funcionalidad de indexación de MongoDB:
use students
db.createCollection("studentgrades")
db.studentgrades.insertMany(
[
{name: "Barry", subject: "Maths", score: 92},
{name: "Kent", subject: "Physics", score: 87},
{name: "Harry", subject: "Maths", score: 99, notes: "Exceptional Performance"},
{name: "Alex", subject: "Literature", score: 78},
{name: "Tom", subject: "History", score: 65, notes: "Adequate"}
]
)
db.studentgrades.find({},{_id:0})
Resultado
¿Son únicos los índices de MongoDB?
Al crear documentos en una colección, MongoDB crea un índice único usando el campo _id. MongoDB se refiere a esto como el Índice de _id Predeterminado. Este índice predeterminado no puede eliminarse de la colección.
Al consultar el conjunto de datos de prueba, te puede Ve el campo _id que se utilizará como índice por defecto:
db.studentgrades.find().pretty()
Resultado:
Cómo Crea un índice en MongoDB
Para Crea un índice en MongoDB, utiliza el método createIndex() usando la siguiente sintaxis:
db..createIndex(, )
Al crear un índice, Define el campo a indexar y la dirección de la clave (1 o -1) para indicar el orden ascendente o descendente.
Si te utiliza un índice descendente de un solo campo, puede Reduce el rendimiento. están mejor utiliza índices ascendentes de un solo campo, si te quieres resultados óptimos.
Otra cosa a tener en cuenta están los nombres de los índices. Por defecto, MongoDB generará los nombres de los índices concatenando las claves indexadas con la dirección de cada clave en el índice usando un guion bajo como separador. Por ejemplo: {name: 1} se creará como name_1.
La mejor práctica están utilizar la opción de nombre para Define un nombre de índice personalizado al crear un índice. Los índices no pueden cambiarse de nombre después de crearlos. La única forma de renombrar un índice están primero eliminar ese índice, que mostramos a continuación, y recrearlo usando el nombre deseado.
Ejemplo de createIndex()
Crea un índice usando el campo de nombre en la colección studentgrades y lo denominemos índice de nombres de estudiantes.
db.studentgrades.createIndex(
{name: 1},
{name: "student name index"}
)
Resultado:
Encontrar índices en MongoDB
te puede encontrar todos los índices disponibles en una colección de MongoDB utilizando el método getIndexes(). Esto devolverá todos los índices de una colección específica.
db..getIndexes()
Ejemplo getIndexes()
Veamos todos los índices de la colección studentgrades usando el siguiente comando:
db.studentgrades.getIndexes()
Resultado:
La salida contiene el índice predeterminado de _id y el índice creado por el usuario índice de nombres de estudiantes.
Cómo listar índices en MongoDB
Tú puedes listar índices en una colección de datos usando Shell o Compass. Este comando te dará una matriz de documentos índice:
db.collection.getIndexes()
Una alternativa están utiliza la interfaz de MongoDB Atlas. Abre un clúster y ve a la pestaña de Colecciones. Selecciona la base de datos y la colección, luego haz clic en Índices para Ve que aparecen listados.
Por último, te puede utiliza el siguiente comando en la CLI de MongoDB Atlas para Ve los índices:
atlas clusters index list --clusterName --db --collection
Cómo eliminar índices en MongoDB
Para eliminar o eliminar un índice de una colección de MongoDB, utiliza el método dropIndex() mientras se especifica el nombre del índice que se va a eliminar.
db..dropIndex()
Ejemplos de dropIndex()
Eliminemos el índice creado por el usuario con el índice de nombre de estudiante índice de nombre, como se muestra a continuación.
db.studentgrades.dropIndex("student name index")
Resultado:
te también puede utiliza el valor del campo índice para eliminar un índice sin un nombre definido:
db.studentgrades.dropIndex({name:1})
Resultado:
El comando dropIndexes también puede eliminar todos los índices excepto el índice de _id por defecto.
db.studentgrades.dropIndexes()
Resultado:
¿Cuáles son los diferentes tipos de índices en MongoDB?
MongoDB ofrece diferentes tipos de índices que pueden utilizarse según las necesidades del usuario. Aquí son los principales tipos de índices en MongoDB:
- Índice de campo único
- Índice compuesto
- Índice multiclave
Además de los populares tipos de índices mencionados anteriormente, MongoDB también ofrece algunos tipos especiales de índices para casos de utiliza específicos:
- Índice geoespacial
- Índice de pruebas
- Índice hashado
Índice de campo único
Estos índices definidos por el usuario utilizan un solo campo en un documento para Crea un índice en orden ascendente o descendente (1 o -1). En un único índice de campo, el orden de ordenación de la clave de índice no tiene impacto porque MongoDB puede recorrer el índice en cualquiera de las dos direcciones.
Ejemplo
db.studentgrades.createIndex({name: 1})
Resultado:
El índice anterior ordenará los datos en orden ascendente usando el campo de nombre. te puede utiliza el método sort() para Ve cómo se representarán los datos en el índice.
db.studentgrades.find({},{_id:0}).sort({name:1})
Resultado:
Índice compuesto
te puede utiliza varios campos en un documento de MongoDB para Crea un índice compuesto. Este tipo de índice utiliza el primer campo para la ordenación inicial y luego ordenará por los campos anteriores.
Ejemplo
En el siguiente índice compuesto, MongoDB será:
- Primero ordenar por campo temático
- Luego, dentro de cada valor de materia, ordena por calificación
db.studentgrades.createIndex({subject: 1, score: -1})
El índice Crea una estructura de datos similar a la siguiente:
db.studentgrades.find({},{_id:0}).sort({subject:1, score:-1})
Resultado:
MongoDB soporta indexar campos de arrays. Cuando te Crea un índice para un campo que contiene un array, MongoDB Crea entradas de índice separadas para cada elemento del array. Estos índices multiclave Permite a los usuarios consultar documentos usando los elementos dentro del array.
MongoDB Crea automáticamente un índice multiclave cuando se encuentre con un campo de array sin que el usuario tenga que Define explícitamente el tipo multiclave.
Vamos a Crear un nuevo conjunto de datos que contenga un campo de array para demostrar la creación de un índice multiclave en MongoDB.
db.createCollection("studentperformance")
db.studentperformance.insertMany(
[
{name: "Barry", school: "ABC Academy", grades: [85, 75, 90, 99] },
{name: "Kent", school: "FX High School", grades: [74, 66, 45, 67]},
{name: "Alex", school: "XYZ High", grades: [80, 78, 71, 89]},
]
)
db.studentperformance.find({},{_id:0}).pretty()
Resultado:
Ahora vamos a Crear un índice usando el campo de grados.
db.studentperformance.createIndex({grades:1})
Resultado:
El código anterior Crea automáticamente un índice Multiclave en MongoDB. Cuando te consulta un documento usando el campo del array (grades), MongoDB buscará el primer elemento del array definido en el método find() y luego buscará toda la consulta correspondiente.
Por ejemplo, consideremos la siguiente consulta de hallazgo:
db.studentperformance.find({grades: [80, 78, 71, 89]}, {_id: 0})
Inicialmente, MongoDB utiliza el índice multiclave para buscar documentos donde el arreglo de grados contiene el primer elemento (80) en cualquier posición. Luego, dentro de esos documentos seleccionados, se seleccionarán los documentos con todos los elementos correspondientes.
Índice Geoespacial
MongoDB proporciona dos tipos de índices para aumentar la eficiencia de las consultas a bases de datos al tratar con datos de coordenadas geoespaciales:
- índices 2D que utilizan geometría planar, la cual está destinada a pares de coordenadas heredados usados en MongoDB 2.2 y anteriores.
- índices 2dsphere que utilizan geometría esférica.
Sintaxis:
db..createIndex( { : "2dsphere" } )
Índice de texto
El tipo de índice de texto te permite buscar en el contenido de la cadena en una colección.
Sintaxis:
db..createIndex( { : "text" } )
Índice hashado
El tipo de índice hashado de MongoDB se está utilizado para proporcionar soporte para funcionalidades de fragmentación basada en hash. Esto indexaría el valor hash del campo especificado.
Sintaxis:
db..createIndex( { : "hashed" } )
Propiedades del índice MongoDB
Tú puedes mejorar aún más la funcionalidad de un índice utilizando propiedades de índice. En esta sección, te Obtén estas propiedades de índice más usadas:
- Propiedad del índice escaso
- Propiedad parcial del índice
- Propiedad única del índice
Propiedad del índice escaso
La propiedad de dispersión de MongoDB permite que los índices omitan documentos indexados en una colección si el campo indexado no está disponible en un documento y Crea un índice que contenga únicamente los documentos que contienen el campo indexado.
Ejemplo
db.studentgrades.createIndex({notes:1},{sparse: true})
Resultado:
En la colección anterior de studentgrades, si te Crea un índice usando el campo notes, solo indexará dos documentos ya que el campo notes solo están presente en dos documentos.
Propiedad parcial del índice
La funcionalidad de índice parcial permite a los usuarios Crea índices que coinciden con una determinada condición de filtro. Los índices parciales utilizan la opción Expresión Parcial de Filtro para especificar la condición del filtro.
Ejemplo
db.studentgrades.createIndex(
{name:1},
{partialFilterExpression: {score: { $gte: 90}}}
)
Resultado:
El código anterior Crea un índice para el campo de nombre, pero solo incluirá documentos en los que el valor del campo de puntuación están mayor o igual a 90.
Propiedad única del índice
La propiedad única permite a los usuarios Crea un índice de MongoDB que solo incluye valores únicos. Esto será:
- Rechazar cualquier valor duplicado en el campo indexado
- Limita el índice a documentos que contengan valores únicos
Ejemplo
db.studentgrades.createIndex({name:1},{unique: true})
Resultado:
El índice creado anteriormente limitará la indexación a documentos con valores únicos en el campo de nombre.
Resumen de índices
Con esto concluye este tutorial y guía de índices de MongoDB. te aprendido a Crea, encontrar y eliminar índices, utiliza diferentes tipos de índices y Crea índices complejos. Estos índices pueden utilizarse para mejorar aún más la funcionalidad de las bases de datos de MongoDB, aumentando el rendimiento de aplicaciones que utilizan consultas rápidas de bases de datos.
Lecturas relacionadas
Guía de MongoDB
- Resumen de MongoDB: Empezando con MongoDB
- Cómo instalar MongoDB en Ubuntu y Mac
- Creación de una base de datos en MongoDB
- Comandos básicos de MongoDB Shell
- MongoDB Compass: Uso de la interfaz gráfica de Mongo
- Explicación del Control de Acceso Basado en Roles (RBAC) de MongoDB
- Explicación de los operadores de proyección y proyección de MongoDB
- Explicación de las funciones agregadas de MongoDB
- Ordenación de MongoDB: método y ejemplos de sort()
- Uso de operadores de Push & Pull en MongoDB
- Cómo utiliza MongoDB $unwind
- 23 operadores comunes de consultas de MongoDB y cómo utilizarlos
- Ejemplos de consultas de geolocalización de MongoDB
- Introducción a las transacciones de MongoDB
- Índices de MongoDB: Principales tipos de índices y cómo gestionarlos
- Mejores comandos de MongoDB te necesitas saber
- Replicación de MongoDB: Una introducción completa
- Cómo configurar un clúster de MongoDB
- Fragmentos de MongoDB: Conceptos, Ejemplos y Tutoriales
- MongoDB Atlas: Configuración y uso de MongoDB gestionado
- Cómo ejecutar MongoDB como contenedor Docker
- Uso, gestión y requisitos de memoria de MongoDB
- Cómo utilizar Mongodump para copias de seguridad de MongoDB
- Ejemplos de Mongorestore para restaurar copias de seguridad de MongoDB
- Cómo utilizar PyMongo
- Cómo utilizar Mongoose para MongoDB y NodeJS
- Chuletas de MongoDB
- MongoDB vs Cassandra: Comparación de bases de datos NoSQL
- PostgreSQL vs MongoDB: Comparando bases de datos
- MySQL vs MongoDB: Comparando bases de datos
- Certificaciones MongoDB: Una introducción
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.