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

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 admin banco de dados a partir de uma mongos instância.

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 bounds especificação do. Por exemplo, se a chave de shard { x: 1, y: 1 } for, 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 somente em circunstâncias especiais.mergeChunks 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 casomergeChunks de sucesso, 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 chunks coleção:

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

Se outro processo, como o processo de balanceador , alterar metadados enquanto estiver em execução, você poderá ver mergeChunks mergeChunks esse erro. Você pode tentar novamente a operação 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, retornará um erro semelhante aomergeChunks 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)
}