Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Criar um Índice em um Campo de Array

Nesta página

  • Sobre esta tarefa
  • Procedimento
  • Resultados
  • Saiba mais

Você pode criar um índice em um campo que contém um valor de array para melhorar o desempenho de queries nesse campo. Quando você cria um índice em um campo que contém um valor de array, o MongoDB armazena esse índice como um índice de várias chaves.

Para criar um índice, use o método db.collection.createIndex() . Sua operação deve se assemelhar a este protótipo:

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

O exemplo nesta página utiliza uma coleção students que contém estes 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 ]
}
] )

Você executa regularmente uma consulta que retorna alunos com pelo menos um test_score maior que 90. É possível criar um índice no campo test_scores para melhorar o desempenho dessa consulta.

A seguinte operação cria um índice de múltiplas chaves ascendente no campo test_scores da coleção students:

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

Como o test_scores contém um valor de array, o MongoDB armazena este índice como um índice de múltiplas chaves.

O índice contém uma chave para cada valor individual que aparece no campo test_scores. O índice está subindo, o que significa que as chaves são armazenadas nesta ordem: [ 62, 73, 88, 89, 92, 97 ].

O índice suporta queries que selecionam no campo test_scores. Por exemplo, a query a seguir retorna documentos em que pelo menos um elemento na array test_scores é maior que 90:

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

Saída:

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