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.

mesclarChunks (comando de banco de dados)

mergeChunks

Para uma collection fragmentada, mergeChunks combina faixas de chunks contíguas em um shard em um único chunk . Emita o comando mergeChunks no banco de banco de dados admin a partir de uma instância mongos .

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.adminCommand( { mergeChunks: <namespace>, bounds : [ { <shardKeyField>: <minFieldValue> }, { <shardKeyField>: <maxFieldValue> } ] })

Para chaves de shard compostas, você deve incluir a chave de shard completa na especificação do bounds . Por exemplo, se a chave de shard for { x: 1, y: 1 }, mergeChunks terá o seguinte formulário:

db.adminCommand( { mergeChunks: <namespace>, bounds: [ { x: <minValue>, y: <minValue> }, { x: <maxValue>, y: <maxValue> } ] } )

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição

mergeChunks

namespace

O namespace totalmente qualificado da coleção onde existem ambos os blocos . Os namespaces assumem a forma de <database>.<collection>.

bounds

array

Uma array que contém os valores de chave mínimos e máximos do novo chunk.

Em sistemas executados com authorization, o role integrado clusterManager fornece os privilégios necessários.

Observação

Use o mergeChunks somente em circunstâncias especiais. Por exemplo, ao limpar seu cluster fragmentado após remover muitos documentos.

Para mesclar partes com êxito, o seguinte deve ser verdadeiro:

  • No campo bounds , <minkey> e <maxkey> devem corresponder aos limites inferior e superior das partes a serem mesclados.

  • As partes devem residir no mesmo fragmento.

  • As partes devem ser contíguos.

mergeChunks retorna um erro se estas condições não forem satisfeitas.

Em caso de sucesso, mergeChunks retorna este documento:

{ "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1)}

mergeChunks retorna a seguinte mensagem de erro se outra operação de metadados estiver em andamento na coleção chunks :

errmsg: "The collection's metadata lock is already taken."

Se outro processo, como o processo de balancer, alterar metadados enquanto mergeChunks estiver em execução, você poderá ver esse erro. Você pode tentar novamente a operação mergeChunks sem efeitos colaterais.

Se os chunks de entrada não estiverem no mesmo shard, mergeChunks retornará um erro semelhante ao seguinte:

{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users does not contain a chunk ending at { username: \"user63169\" }", "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1)}

Se os chunks de entrada não forem contíguos, mergeChunks retornará um erro semelhante ao seguinte:

{ "ok" : 0, "errmsg" : "could not merge chunks, collection test.users has more than 2 chunks between [{ username: \"user29937\" }, { username: \"user49877\" })" "$clusterTime" : { "clusterTime" : Timestamp(1510767081, 1), "signature" : { "hash" : BinData(0,"okKHD0QuzcpbVQg7mP2YFw6lM04="), "keyId" : Long("6488693018630029321") } }, "operationTime" : Timestamp(1510767081, 1) }