Definição
moveCollectionNovidades na versão 8.0.
Move uma única collection não fragmentada para um shard diferente. Execute
moveCollectioncom uma instânciamongosao usar o banco de banco de dados admin.
Compatibilidade
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
Restrições
Não é possÃvel usar moveCollection para collections de Queryable Encryption.
Sintaxe
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.
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| string | Banco de dados e nome da coleção a ser movida. |
| string | ID do shard do destinatário. |
Considerações
moveCollectionsó pode ser executado em clusters fragmentados.moveCollectionsó pode mover collections não fragmentadas.moveCollectionsó pode mover uma única collection por vez.moveCollectiontem uma duração mÃnima de 5 minutos.writeConcernMajorityJournalDefaultdeve sertrue.Para mover uma coleção que tenha uma restrição de exclusividade, o novo Ãndice deve satisfazer os requisitos de Ãndice únicos para quaisquer Ãndices únicos existentes.
Se a coleção que está sendo movida usar o MongoDB 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 collection que você está movendo estiver arquivada nos Atlas Online Archives, os arquivos do Online Archive serão marcados como
Orphanedassim que 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 noActiveestado.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
moveCollectionseja concluÃda.Não é possÃvel executar as seguintes operações na collection que está sendo movida enquanto
moveCollectionestiver em andamento:Você não pode executar as seguintes operações no cluster enquanto o
moveCollectionestiver em andamento:As compilações de Ãndice que ocorrem enquanto
moveCollectionestá em andamento podem falhar silenciosamente.Não crie Ãndices enquanto
moveCollectionestiver em andamento.Não chame
moveCollectionse houver construções de Ãndice em andamento.
Requisitos
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 ) * 2bytes 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.
Exemplo
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.