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" )