MongoDB proporciona soporte completo para índices en cualquier campo en una 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 admitir consultas y operaciones importantes.
Este documento describe índices ascendentes / descendentes en un solo campo.
Considere una colección nombrada records
que contiene documentos que se parecen al siguiente documento de muestra:
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"score": 1034,
"location": { state: "NY", city: "New York" }
}
La siguiente operación crea un índice ascendente en el score
campo de la records
colección:
db.records.createIndex( { score: 1 } )
El valor del campo en la especificación del índice describe el tipo de índice para ese campo. Por ejemplo, un valor de 1
especifica un índice que ordena los elementos en orden ascendente. Un valor de -1
especifica un índice que ordena los elementos en orden descendente. Para tipos de índices adicionales, consulte tipos de índices .
El índice creado admitirá consultas que se seleccionen en el campo score
, como las siguientes:
db.records.find( { score: 2 } )
db.records.find( { score: { $gt: 10 } } )
Puede crear índices en campos dentro de documentos incrustados, al igual que puede indexar campos de nivel superior en documentos. Los índices de los campos incrustados difieren de los índices de los documentos incrustados , que incluyen el contenido completo hasta el máximo index size
del documento incrustado en el índice. En cambio, los índices en los campos incrustados le permiten utilizar una "notación de puntos" para introspectar los documentos incrustados.
Considere una colección nombrada records
que contiene documentos que se parecen al siguiente documento de muestra:
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"score": 1034,
"location": { state: "NY", city: "New York" }
}
La siguiente operación crea un índice en el location.state
campo:
db.records.createIndex( { "location.state": 1 } )
El índice creado admitirá consultas que se seleccionen en el campo location.state
, como las siguientes:
db.records.find( { "location.state": "CA" } )
db.records.find( { "location.city": "Albany", "location.state": "NY" } )
También puede crear índices en el documento incrustado como un todo.
Considere una colección nombrada records
que contiene documentos que se parecen al siguiente documento de muestra:
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"score": 1034,
"location": { state: "NY", city: "New York" }
}
El location
campo es un documento incrustado, que contiene los campos incrustados city
y state
. El siguiente comando crea un índice en el location
campo como un todo:
db.records.createIndex( { location: 1 } )
La siguiente consulta puede usar el índice en el location
campo:
db.records.find( { location: { city: "New York", state: "NY" } } )
NOTA: Aunque la consulta puede utilizar el índice, el conjunto de resultados no incluye el documento de muestra anterior. Al realizar coincidencias 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 la consulta de documentos incrustados.
Las aplicaciones pueden encontrar un rendimiento reducido durante la creación de índices, incluido el acceso limitado de lectura / escritura a la colección. Para obtener más información sobre el proceso de generación de índices, consulte Generaciones de índices en colecciones pobladas , incluida la sección Generaciones de índices en entornos replicados .
Algunos controladores pueden especificar índices, utilizando en NumberLong(1)
lugar de 1
como especificación. Esto no tiene ningún efecto sobre el índice resultante.