🗂️ Crear índices (Indexing)

Crear índices en MongoDB

🗂️ Crear índices (Indexing)

Los índices en MongoDB son estructuras especiales que mejoran la velocidad de las consultas (find(), aggregate(), etc.) en colecciones grandes. Sin índices, MongoDB tendría que escanear todos los documentos, lo que es lento en bases de datos con muchos registros.


🔹 1️⃣ Concepto de índice

Un índice almacena información sobre un campo o combinación de campos, permitiendo búsquedas rápidas y ordenamiento eficiente.

  • Se puede crear en uno o varios campos.
  • Los índices ocupan espacio adicional en disco y memoria.
  • Se recomienda crear índices en campos que se consultan frecuentemente.

🔹 2️⃣ Crear un índice simple

Ejemplo: queremos un índice en el campo nombre de la colección productos:

db.productos.createIndex({ nombre: 1 })

Aquí 1 indica orden ascendente. Para descendente usaríamos -1.


🔹 3️⃣ Índice compuesto

Si queremos mejorar consultas que usan varios campos:

db.productos.createIndex({ categoria: 1, precio: -1 })

MongoDB optimizará consultas que filtren por categoria y ordenen por precio.


🔹 4️⃣ Índices únicos

Podemos garantizar que no haya valores duplicados en un campo usando unique: true:

db.usuarios.createIndex({ email: 1 }, { unique: true })

MongoDB rechazará documentos con el mismo email.


🔹 5️⃣ Listar y eliminar índices

Para ver todos los índices de una colección:

db.productos.getIndexes()

Para eliminar un índice:

db.productos.dropIndex("nombre_1")

🧠 6️⃣ Buenas prácticas

  • Crea índices solo en campos consultados frecuentemente.
  • Evita demasiados índices en colecciones grandes, ya que ralentizan inserciones y actualizaciones.
  • Usa índices compuestos cuando las consultas combinan varios campos.
  • Aplica unique para campos que deben ser exclusivos.
  • Revisa periódicamente índices con getIndexes() para optimizar rendimiento.

🧭 7️⃣ Resumen rápido

  • Los índices mejoran la velocidad de consultas en MongoDB.
  • Pueden ser simples, compuestos o únicos.
  • Es importante balancear entre rendimiento de lectura y escritura.
  • Se gestionan con createIndex(), getIndexes() y dropIndex().

Publicar un comentario

0 Comentarios