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

Impor exclusividade nos valores da chave de shard

Para impor singularidade nos próprios valores de chave de fragmento, passe o parâmetro unique como true para o método sh.shardCollection().

Um índice único na chave de fragmentação impõe exclusividade em toda a combinação da chave, não nos componentes individuais da chave de fragmentação.

Você não pode especificar unique como true ao usar uma chave de fragmento com hash.

As seguintes restrições se aplicam quando você especifica unique: true:

  • Se a collection estiver vazia, sh.shardCollection() cria o índice exclusivo na chave de fragmentação se tal índice ainda não existir.

  • Se a collection não estiver vazia, é necessário criar o índice antes de usar sh.shardCollection().

  • Se a coleção tiver um índice que suporte a chave de shard com hash, mas esse índice não for exclusivo, sh.shardCollection() retornará um erro.

Embora possa existir um índice composto exclusivo onde a chave de fragmentação é um prefixo, se você utilizar o parâmetro unique, a collection deverá ter um índice exclusivo que esteja na chave de fragmentação.

Se você omitir unique ou especificar unique: false, sh.shardCollection() não alterará os índices existentes da coleção. Se um índice único na chave de fragmentação já existir, esse índice permanecerá exclusivo e o cluster fragmentado continuará a impor a restrição de exclusividade aos valores da chave de fragmentação entre os fragmentos.

Para obter o conjunto completo de restrições que se aplicam a índices exclusivos em coleções fragmentadas, consulte Manter exclusividade em clusters fragmentados.

  • Confirme que nenhum documento existente viola a restrição de exclusividade para os valores da chave de shard.

  • Conecte o mongosh a uma instância do mongos.

O exemplo a seguir fragmenta a coleta accounts.names em region_id e impõe uma restrição exclusiva nos valores da chave de fragmento.

1
use accounts
db.names.createIndex( { "region_id": 1 }, { unique: true } )
2

Para fragmentar a coleção no índice region_id exclusivo. O parâmetro unique é o terceiro argumento para sh.shardCollection():

sh.shardCollection( "accounts.names", { region_id: 1 }, true )