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.
Sobre esta tarefa
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.
Antes de começar
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.
Passos
O exemplo seguinte cria um índice único no campo email da collection accounts.names, que é fragmentado no campo region_id.
Verificar a chave de shard
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()