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

Índices de campo único

Nesta página

  • Compatibilidade
  • Criar um índice ascendente em um único campo
  • Criar um Índice em um Campo Incorporado
  • Criar um índice sobre documento incorporado
  • Considerações adicionais

O MongoDB fornece suporte completo para índices em qualquer campo em umacoleção de documentos . Por padrão, todas as collections têm um índice no campo _id, e os aplicativos e usuários podem adicionar índices adicionais para dar suporte a queries e operações importantes.

Este documento descreve índices crescentes/descendentes em um único campo.

Diagrama de um índice no campo ``score`` (crescente).

Você pode utilizar índices de campo único para sistemas hospedados no MongoDB Atlas.

Para saber mais sobre como gerenciar índices para distribuições hospedadas no MongoDB Atlas, consulte Criar, visualizar, descartar e ocultar índices.

Considere uma collection schools que contenha o seguinte documento de amostra:

db.schools.insertOne(
{
"_id": ObjectId("570c04a4ad233577f97dc459"),
"studentsEnrolled": 1034,
"location": { state: "NY", city: "New York" }
}
)

A seguinte operação cria um índice ascendente no campo studentsEnrolled da collection schools :

db.schools.createIndex( { studentsEnrolled: 1 } )

O índice criado suporta query que selecionam no campo studentsEnrolled, como o seguinte:

db.schools.find( { studentsEnrolled: 1034 } )
db.schools.find( { studentsEnrolled: { $gt: 500 } } )

Você pode criar índices em campos dentro de documentos incorporados, da mesma forma que pode indexar campos de nível superior em documentos. Os índices em campos incorporados são diferentes dos índices em documentos incorporados, que incluem o conteúdo completo até o tamanho máximo do índice do documento incorporado no índice. Em vez disso, índices em campos incorporados permitem que você use uma "notação de ponto" para introspecção em documentos incorporados.

Considere uma coleta chamada records que contenha documentos que se assemelham ao seguinte documento de amostra:

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

A seguinte operação cria um índice no campo location.state :

db.schools.createIndex( { "location.state": 1 } )

O índice criado suportará queries que selecionam no campo location.state , como o seguinte:

db.schools.find( { "location.state": "CA" } )
db.schools.find( { "location.city": "Albany", "location.state": "NY" } )

Você também pode criar índices no documento incorporado como um todo.

Ao criar um índice em um documento incorporado, somente as consultas que especificam todo o documento incorporado utilizam o índice. Consultas em um campo específico do documento não usam o índice.

Considere uma coleta chamada schools que contenha documentos que se assemelham ao seguinte documento de amostra:

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

O campo location é um documento incorporado, contendo os campos incorporados city e state. O seguinte comando cria um índice no campo location como um todo:

db.schools.createIndex( { location: 1 } )

A seguinte query pode utilizar o índice no campo location :

db.schools.find( { location: { city: "New York", state: "NY" } } )

Observação

Embora a query possa usar o índice, o conjunto de resultados não inclui o documento de amostra acima. Ao realizar correspondências de igualdade em documentos incorporados, a ordem dos campos é importante e os documentos incorporados devem corresponder exatamente. Consulte Fazer query de documentos incorporados para obter mais informações sobre como consultar documentos incorporados.

Durante a criação de índices, os aplicativos podem encontrar desempenho reduzido ou acesso limitado de leitura/gravação à coleção que está sendo indexada.

Para obter mais informações sobre o processo de construção de índices, consulte Construções de índices em collection preenchidas, especialmente a seção Construções de índices em ambientes replicados .

Alguns drivers usam NumberLong(1) em vez de 1 para especificar a ordem do índice. Os índices resultantes são os mesmos.

Voltar

Indexes