Skip to content

Latest commit

 

History

History
96 lines (64 loc) · 5.14 KB

indices-de-campo-unico.md

File metadata and controls

96 lines (64 loc) · 5.14 KB

Índices de campo único

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.

Cree un índice ascendente en un solo campo

Considere una colección nombrada recordsque 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 recordscolecció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 1especifica un índice que ordena los elementos en orden ascendente. Un valor de -1especifica 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 } } )

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 de los campos incrustados difieren de los índices de los documentos incrustados , que incluyen el contenido completo hasta el máximo index sizedel 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 recordsque 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" } )

Crear un índice en un documento incrustado

También puede crear índices en el documento incrustado como un todo.

Considere una colección nombrada recordsque contiene documentos que se parecen al siguiente documento de muestra:

{
  "_id": ObjectId("570c04a4ad233577f97dc459"),
  "score": 1034,
  "location": { state: "NY", city: "New York" }
}

El locationcampo es un documento incrustado, que contiene los campos incrustados cityy 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 locationcampo:

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.

Consideraciones adicionales

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 1como especificación. Esto no tiene ningún efecto sobre el índice resultante.