Este capítulo presenta los índices de MongoDB. Al igual que MYSQL, MongoDB también soporta índices. La diferencia es que MongoDB permite agregar índices a cualquier campo anidado de la estructura JSON, con el mismo propósito de mejorar la eficiencia de las consultas.
Tipos de Índices en MongoDB
Índice de Campo Único
Similar a MYSQL, se crea un índice para un solo campo.
Formato:
db.collection.createIndex( { nombre_campo: dirección_ordenamiento(1 o -1) } )
Nota: La dirección de ordenamiento 1 representa orden ascendente y -1 representa orden descendente.
Ejemplo 1:
db.records.createIndex( { score: 1 } )
Crea un índice para el campo score.
Ejemplo 2:
db.records.createIndex( { "location.state": 1 } )
Crea un índice para el campo anidado location.state en el JSON.
Índice Compuesto
Similar a MYSQL, se pueden combinar varios campos para crear un índice, acelerando la velocidad de las consultas compuestas.
Formato:
db.collection.createIndex( { <campo1>: <tipo>, <campo2>: <tipo2>, ... } )
Ejemplo:
db.products.createIndex( { "item": 1, "stock": 1 } )
Crea un índice compuesto para los campos item y stock, ambos en orden ascendente (1 representa orden ascendente).
Índice de Texto (Índice de Texto Completo)
El índice de texto (text) se utiliza principalmente para admitir búsquedas de texto completo.
Nota: Una colección solo permite un índice de texto, pero un índice de texto puede incluir varios campos.
Ejemplo:
db.stores.createIndex( { name: "text", description: "text" } )
Crea un índice de texto completo para los campos name y description.
Nota: Para más detalles, consulta la sección Full Text Index section.
Índice Espacial (Índice GEO)
Utilizado principalmente para admitir consultas relacionadas con información geográfica, principalmente compatible con dos tipos de índices: 2dsphere y 2d. Para más detalles, consulta la sección Geospatial Query section.
Eliminar Índices
Para listar todos los índices en una colección:
db.pets.getIndexes()
Para eliminar el índice catIdx de la colección pets:
db.pets.dropIndex( "catIdx" )