Menu Docs
Página inicial do 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

Voltar

Coleções fragmentadas

Nesta página