Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Crea un índice en un campo de arreglo

Puedes crear un índice en un campo que contenga un valor de arreglo para mejorar el rendimiento de las queries en ese campo. Cuando creas un índice en un campo que contiene un valor de arreglo, MongoDB almacena ese índice como un índice multi clave.

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

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

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

db.students.insertMany( [
{
"name": "Andre Robinson",
"test_scores": [ 88, 97 ]
},
{
"name": "Wei Zhang",
"test_scores": [ 62, 73 ]
},
{
"name": "Jacob Meyer",
"test_scores": [ 92, 89 ]
}
] )

Ejecutas regularmente una query que devuelve estudiantes con al menos un test_score mayor que 90. Puede crear un índice en el campo test_scores para mejorar el rendimiento de esta query.

La siguiente operación crea un índice multiclave ascendente en el campo test_scores de la colección students:

db.students.createIndex( { test_scores: 1 } )

Debido a que test_scores 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 test_scores. El índice es ascendente, lo que significa que las claves se almacenan en este orden: [ 62, 73, 88, 89, 92, 97 ].

El índice soporta consultas que seleccionan en el campo test_scores. Por ejemplo, la siguiente query devuelve documentos donde al menos un elemento en el arreglo test_scores es mayor que 90:

db.students.find(
{
test_scores: { $elemMatch: { $gt: 90 } }
}
)

Salida:

[
{
_id: ObjectId("632240a20646eaee87a56a80"),
name: 'Andre Robinson',
test_scores: [ 88, 97 ]
},
{
_id: ObjectId("632240a20646eaee87a56a82"),
name: 'Jacob Meyer',
test_scores: [ 92, 89 ]
}
]

Volver

Multikey

En esta página