Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

moveCollection (comando de banco de dados)

moveCollection

Novidades na versão 8.0.

Move uma única coleção não fragmentada para umfragmento diferente. Execute moveCollection com uma instância mongos enquanto usa o banco de banco de dados admin.

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

Importante

Esse comando não é suportado em clusters M0 e Flex. Para obter mais informações, consulte Comandos não suportados.

  • 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

Não é possível usar moveCollection para collections de Queryable Encryption.

O comando tem a seguinte sintaxe:

db.adminCommand(
{
moveCollection: "<database>.<collection>",
toShard: "<ID of the recipient shard>",
}
)

Observação

Use o comando listShards para recuperar o ID do shard do destinatário.

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição

moveCollection

string

Banco de dados e nome da coleção a ser movida.

toShard

string

ID do shard do destinatário.

  • moveCollection só pode ser executado em clusters fragmentados.

  • moveCollection só pode mover collections não fragmentadas.

  • moveCollection só pode mover uma única collection por vez.

  • moveCollection tem uma duração mínima de 5 minutos.

  • writeConcernMajorityJournalDefault deve ser true.

  • Para mover uma collection que tenha uma restrição de exclusividade, o novo índice deve satisfazer os requisitos de índice único para quaisquer índices únicos existentes.

  • Se a coleção que está sendo movida usar Atlas Search, seus índices de pesquisa ficarão indisponíveis após a conclusão do moveCollection. Você deve reconstruir manualmente os índices de pesquisa.

  • Se a coleção que você está movendo estiver arquivada nos Atlas Online Archives, os arquivos do Online Archive serão marcados como Orphaned quando a operação de transferência for concluída. Você pode criar outro arquivo online para o mesmo banco de dados, coleção e campos que o arquivo órfão, desde que não haja outro arquivo para a mesma combinação no Active estado.

  • Você não pode fazer alterações na topologia , como adicionar ou remover fragmentos ou transição entre servidores de configuração incorporados e dedicados, até que a moveCollection seja concluída.

  • Não é possível executar as seguintes operações na collection que está sendo movida enquanto moveCollection estiver em andamento:

  • Você não pode executar as seguintes operações no cluster enquanto o moveCollection estiver em andamento:

  • As compilações de índice que ocorrem enquanto moveCollection está em andamento podem falhar silenciosamente.

    • Não crie índices enquanto moveCollection estiver em andamento.

    • Não chame moveCollection se houver construções de índice em andamento.

Antes de mover sua collection, certifique-se de atender aos seguintes requisitos:

  • Seu aplicação pode tolerar um período de dois segundos em que a collection afetada bloqueia as gravações. Durante o período em que as gravações são bloqueadas, seu aplicação experimenta um aumento na latência.

  • Seu banco de dados atende aos seguintes requisitos de recursos:

    • Verifique se o fragmento para o qual você está movendo a collection tem espaço de armazenamento suficiente para a collection e seus índices. O fragmento de destino exige pelo menos ( Collection storage size + Index Size ) * 2 bytes disponíveis.

    • Certifique-se de que sua capacidade de E/S esteja abaixo de 50%.

    • Certifique-se de que a carga da CPU esteja abaixo de 80%.

Importante

Esses requisitos não são exigidos pelo banco de dados. Uma falha na alocação de recursos suficientes pode resultar em:

  • o banco de dados ficar sem espaço e desligando

  • redução do desempenho

  • a operação demora mais que o esperado

Se o seu aplicação tiver períodos com menos tráfego, execute esta operação na coleção durante esse período, se possível.

Este exemplo move uma collection não fragmentada chamada inventory no banco de banco de dados app para o shard shard02 .

db.adminCommand(
{
moveCollection: "app.inventory",
toShard: "shard02"
}
)

Para obter uma lista dos IDs de shard disponíveis, execute sh.status(). Para obter detalhes, consulte sh.status() Saída.

Voltar

moveChunk

Nesta página