MongoDB proporciona soporte completo para índices en cualquier campo de una base de datos. Colección de documentos. De forma predeterminada, todas las colecciones tienen un índice en el campo _id, y las aplicaciones y los usuarios pueden agregar índices adicionales para realizar consultas y operaciones importantes.
Este documento describe índices ascendentes/descendentes en un solo campo.
Compatibilidad
Puede utilizar índices de campo único para implementaciones alojadas en MongoDB Atlas.
Para obtener más información sobre cómo administrar índices para implementaciones alojadas en MongoDB Atlas, consulte Crear, ver, eliminar y ocultar índices.
Crear un índice ascendente en un solo campo
Considere una colección schools que contiene el siguiente documento de muestra:
db.schools.insertOne( { "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } } )
La siguiente operación crea un índice ascendente en el campo studentsEnrolled de la colección schools:
db.schools.createIndex( { studentsEnrolled: 1 } )
El índice creado admite consultas que seleccionan en el campo studentsEnrolled, como las siguientes:
db.schools.find( { studentsEnrolled: 1034 } ) db.schools.find( { studentsEnrolled: { $gt: 500 } } )
Crear un índice en un campo incrustado
Puede crear índices en campos dentro de documentos incrustados, al igual que puede indexar campos de nivel superior en documentos. Los índices en campos incrustados difieren de los índices en documentos incrustados, que incluyen todo el contenido hasta el tamaño máximo del documento incrustado. En cambio, los índices en campos incrustados permiten usar una notación de puntos para realizar introspecciones en los documentos incrustados.
Considere una colección llamada records que contiene documentos que se parecen al siguiente documento de muestra:
{ "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } }
La siguiente operación crea un índice en el campo location.state:
db.schools.createIndex( { "location.state": 1 } )
El índice creado admitirá consultas que seleccionen en el campo location.state, como las siguientes:
db.schools.find( { "location.state": "CA" } ) db.schools.find( { "location.city": "Albany", "location.state": "NY" } )
Crear un índice en un documento incrustado
También puede crear índices en el documento incrustado como un todo.
Cuando creas un índice en un documento incrustado, solo las consultas que especifican el documento incrustado completo utilizan el índice. Las consultas sobre un campo específico dentro de un documento no utilizan el índice.
Considere una colección llamada schools que contiene documentos que se parecen al siguiente documento de muestra:
{ "_id": ObjectId("570c04a4ad233577f97dc459"), "studentsEnrolled": 1034, "location": { state: "NY", city: "New York" } }
El campo location es un documento incrustado que contiene los campos city y state. El siguiente comando crea un índice para el campo location en su totalidad:
db.schools.createIndex( { location: 1 } )
La siguiente consulta puede utilizar el índice en el campo location:
db.schools.find( { location: { city: "New York", state: "NY" } } )
Nota
Aunque la consulta puede usar el índice, el conjunto de resultados no incluye el documento de ejemplo anterior. Al realizar búsquedas de igualdad en documentos incrustados, el orden de los campos es importante y los documentos incrustados deben coincidir exactamente. Consulte Consultar documentos incrustados para obtener más información sobre las consultas en documentos incrustados.
Consideraciones adicionales
Durante la creación de índices, las aplicaciones pueden experimentar un rendimiento reducido o acceso de lectura/escritura limitado a la colección que se está indexando.
Para obtener más información sobre el proceso de creación de índices, consulte Creaciones de índices en colecciones pobladas, especialmente la sección Creaciones de índices en entornos replicados.
Algunos controladores usan Long(1) en lugar de 1 para especificar el orden del índice. Los índices resultantes son los mismos.