Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Crea un índice en un campo insertado en un arreglo

Puedes crear índices en campos de documentos incrustados dentro de arreglos. Estos índices mejoran el rendimiento de las queries en campos específicos integrados que aparecen en arreglos. Cuando creas un índice en un campo dentro de un arreglo, MongoDB almacena ese índice como un índice multiclave.

Para crear un índice, usa el db.collection.createIndex() método. Tu operación debe parecerse a este prototipo:

db.<collection>.createIndex( { <field>: <sortOrder> } )

El ejemplo en esta página utiliza una colección inventory que contiene estos documentos:

db.inventory.insertMany( [
{
"item": "t-shirt",
"stock": [
{
"size": "small",
"quantity": 8
},
{
"size": "large",
"quantity": 10
},
]
},
{
"item": "sweater",
"stock": [
{
"size": "small",
"quantity": 4
},
{
"size": "large",
"quantity": 7
},
]
},
{
"item": "vest",
"stock": [
{
"size": "small",
"quantity": 6
},
{
"size": "large",
"quantity": 1
}
]
}
] )

Es necesario pedir más existencias cada vez que se tenga menos de cinco productos en acciones. Para determinar cuáles artículos se deben reordenar, query los documentos donde un elemento del arreglo stock tiene un quantity menor que 5. Para mejorar el rendimiento de esta consulta, puede crear un índice en el campo stock.quantity.

La siguiente operación crea un índice multiclave ascendente en el campo stock.quantity de la colección inventory:

db.inventory.createIndex( { "stock.quantity": 1 } )

Debido a que stock contiene un valor de arreglo, MongoDB almacena este índice como un índice multiclave.

El índice contiene una clave para cada valor individual que aparece en el campo stock.quantity. El índice es ascendente, lo que significa que las claves se almacenan en este orden: [ 1, 4, 6, 7, 8, 10 ].

El índice soporta consultas que seleccionan en el campo stock.quantity. Por ejemplo, la siguiente query devuelve documentos donde al menos un elemento en el arreglo stock tiene un quantity menor que 5:

db.inventory.find(
{
"stock.quantity": { $lt: 5 }
}
)

Salida:

[
{
_id: ObjectId("63449793b1fac2ee2e957ef3"),
item: 'vest',
stock: [ { size: 'small', quantity: 6 }, { size: 'large', quantity: 1 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef2"),
item: 'sweater',
stock: [ { size: 'small', quantity: 4 }, { size: 'large', quantity: 7 } ]
}
]

El índice también soporta operaciones de ordenamiento en el campo stock.quantity, como en esta query:

db.inventory.find().sort( { "stock.quantity": -1 } )

Salida:

[
{
_id: ObjectId("63449793b1fac2ee2e957ef1"),
item: 't-shirt',
stock: [ { size: 'small', quantity: 8 }, { size: 'large', quantity: 10 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef2"),
item: 'sweater',
stock: [ { size: 'small', quantity: 4 }, { size: 'large', quantity: 7 } ]
},
{
_id: ObjectId("63449793b1fac2ee2e957ef3"),
item: 'vest',
stock: [ { size: 'small', quantity: 6 }, { size: 'large', quantity: 1 } ]
}
]

Cuando se ordena un arreglo de objetos en orden descendente, MongoDB ordena primero en función del campo con el elemento de mayor valor.