Você pode criar um novo índice único em uma coleção que já está sharded, mas somente se o índice incluir a chave de shard com hash 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 coleção fragmentada, o MongoDB impõe a exclusividade somente quando o índice é a chave de shard com hash ou inclui a chave de shard com hash como um prefixo.
Para uma coleção já fragmentada, não é possível criar um índice único em outros campos, a menos que a chave de shard com hash seja incluída como prefixo. Se o índice não incluir a chave de shard com hash como prefixo, o MongoDB retornará um erro ao executar o comando createIndexes.
Para saber como manter a exclusividade em um campo que não faz parte da chave de shard com hash, consulte Restrições exclusivas em campos arbitrários.
Antes de começar
Identifique a chave de shard com hash para a coleção. Para visualizar a chave de shard com hash, execute o método
sh.status()e localize a coleção na saída.Confirme se nenhum documento existente viola a restrição de exclusividade para o campo. Se um shard contiver documentos com valores duplicados, a operação de criação de índice poderá ser bem-sucedida nos shards sem duplicatas, mas falhará no shard com duplicatas, deixando índices inconsistentes entre os shards.
Passos
O exemplo a seguir cria um índice único no campo email da coleção accounts.names , que é sharded no campo region_id .
Verifique a chave de shard com hash
Execute o método sh.status() e localize a coleção accounts.names na saída para confirmar se a chave de shard com hash é region_id:
sh.status()