Definição
renameCollectionAltera o nome de uma collection existente. Especifique os nomes das collections como na forma de um
renameCollectionnamespace completo<database>.<collection>().Dica
In
mongosh, this command can also be run through therenameCollection()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.Emita o comando no
renameCollectionbancode 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
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, 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
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { renameCollection: "<source_namespace>", to: "<target_namespace>", dropTarget: <true|false>, writeConcern: <document>, comment: <any> } )
Campos de comando
O comando contém os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| string | O namespace da collection para renomear. O namespace é uma combinação do nome do banco de dados e do nome da collection. |
| string | O novo namespace da collection. Se o novo namespace especificar um banco de dados diferente, o Em implantações do MongoDB Atlas, a função |
| booleano | Opcional. |
| documento | Opcional. Um documento que expressa a write concern para a operação. Omitir para usar a função de gravação padrão. When issued on a sharded cluster, |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Comportamento
Coleções fragmentadas
A partir do MongoDB,5.0 você pode usar o comando para alterar o nome de uma coleção fragmentada. O banco de dados de destino deve ser o mesmo que o banco de dados de renameCollection origem.
Collections não fragmentadas
Você pode usar para renomear uma collection não fragmentada em um cluster fragmentado , desde que os bancos de dados de origem e de destino estejam no mesmo fragmento renameCollection primário.
Coleções de Time Series
Não é possível usar para renomear uma coleção de séries temporais. Para obter mais informações, consulte Limitações renameCollectiondas Coleções de séries temporais.
Collection de destino existente
renameCollection falhará se target for o nome de uma collection existente e você não dropTarget: true especificar.
Construções de índice em andamento
The rename operation fails with a BackgroundOperationInProgressForNamespace error if an index build is in progress on the source collection. The operation also fails if an index build is in progress on the target collection and you specify dropTarget: true.
To rename the collection, wait for the index build to finish and then retry the operation. To check for in-progress index builds, use the db.currentOp() method.
Desempenho
Alterado na versão 3.6.
renameCollection tem implicações de desempenho diferentes, dependendo do namespace de destino.
Se o banco de dados de destino for o mesmo que o banco de dados de origem , simplesmente alterará o namespace. Esta é uma operaçãorenameCollection rápida.
Se o banco de dados de destino diferir do banco de dados de origem, o copiará todos os documentos da coleção de origem para a coleção de destino. Dependendo do tamanho da collection, pode levar mais tempo para serrenameCollection concluída.
Bloqueio de recursos em clusters fragmentados
Alterado na versão 5.0.
Ao renomear uma collection fragmentada ou não fragmentada em um cluster fragmentado, as collections de origem e de destino são bloqueadas exclusivamente em cada shard. As operações subsequentes nas collections de origem e de destino devem aguardar até que a operação de renomeação seja concluída.
Para obter mais informações sobre bloqueios no MongoDB, consulte as Perguntas frequentes: simultaneidade.
Bloqueio de recursos em conjuntos de réplicas
Se estiver renomeando uma collection no mesmo banco de dados, obtém um bloqueio exclusivo nas collections de origem e de destino duranterenameCollection renameCollection a operação. Todas as operações subsequentes nas collections devem esperar até que seja concluído.
If renaming a collection between different databases, renameCollection obtains an exclusive (W) lock on the target database, an intent shared (r) lock on the source database, and a shared (S) lock on the source collection. Subsequent operations on the target database must wait until renameCollection releases the exclusive database lock.
Para obter mais informações sobre bloqueios no MongoDB, consulte as Perguntas frequentes: simultaneidade.
local Database
Você não pode renomear uma collection de um banco de dados replicado para o banco de dados do
local, que não é replicado.Não pode renomear uma collection a partir da base de dados
local, que não é replicada, para uma base de dados replicada.
Abrir cursores
Aviso
The db.collection.renameCollection() method and renameCollection command will invalidate open cursors which interrupts queries that are currently returning data.
Fluxos de alterações
For MongoDB Change Streams, the db.collection.renameCollection() method and renameCollection command create an invalidate Event for any existing MongoDB Change Streams opened on the source or target collection.
Interação com mongodump
Ummongodumpiniciado com--oplogfalha se um cliente emitir o comandorenameCollectiondurante o processo de despejo. Consultemongodump.--oplogpara mais informações.
Exemplo
O exemplo seguinte renomeia uma collection denominada orders no banco de dados do test para orders2014 no banco de dados do test.
db.adminCommand( { renameCollection: "test.orders", to: "test.orders2014" } )
mongosh provides the db.collection.renameCollection() helper for the command to rename collections within the same database. The following is equivalent to the previous example:
use test db.orders.renameCollection( "orders2014" )