Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Crie um índice único na coleção fragmentada existente

Você pode criar um novo índice único em uma collection que já esteja fragmentada, mas somente se o índice incluir a chave de shard como prefixo.

A restrição de exclusividade em um índice garante que os documentos na coleção tenham um valor exclusivo para o campo indexado. Para uma collection fragmentada, o MongoDB impõe exclusividade somente quando o índice é a chave de shard ou inclui a chave de shard como prefixo.

Para uma collection já fragmentada, não é possível criar um índice único em outros campos, a menos que a chave de shard seja incluída como prefixo. Se o índice não incluir a chave de shard como prefixo, o MongoDB retornará um erro quando você executar o createIndexes comando.

Para saber como manter a exclusividade em um campo que não faz parte da chave de shard, consulte Restrições únicas em campos arbitrários.

  • Identifique a chave fragmentada da coleção. Para visualizar a chave de fragmento, execute o método e localize a coleção no sh.status() resultado.

  • Confirme que nenhum documento existente viola a restrição de exclusividade do campo. Se um fragmento contiver documentos com valores duplicados, a operação de criação de índice poderá ser bem-sucedido nos fragmentos sem duplicatas, mas falhará no fragmento com duplicatas, deixando índices inconsistentes entre os fragmentos.

O exemplo seguinte cria um índice único no campo email da collection accounts.names, que é fragmentado no campo region_id.

1

Execute o método e localize a sh.status() accounts.names coleção na saída para confirmar que a chave de shard region_id é:

sh.status()
2

Conecte mongosh o a uma mongos instância do e crie o índice único. Inclua a chave de fragmento region_id como prefixo do índice composto:

db.names.createIndex(
{ region_id: 1, email: 1 },
{ unique: true }
)
region_id_1_email_1