MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Copiar/clonar uma coleção no MongoDB


Nas versões anteriores do MongoDB, você poderia usar o db.collection.copyTo() método para copiar uma coleção.

Desde então, o MongoDB preteriu esse método. Além disso, a partir da versão 4.2, o MongoDB removeu o eval comando. Dado db.collection.copyTo() envolve eval , isso significa que você não pode usar nenhum deles se estiver usando o MongoDB 4.2 ou posterior.

Felizmente, há outra maneira de copiar uma coleção do MongoDB.

Verificar ferramentas de banco de dados MongoDB


No MongoDB, você pode clonar uma coleção usando as ferramentas de banco de dados do MongoDB. Especificamente, você pode usar mongodump e mongorestore .

As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB.

Se você não tem certeza se tem o MongoDB Database Tools instalado, tente executar os seguintes comandos em seu Terminal ou Prompt de Comando para verificar:
mongodump --version
mongorestore --version

Isso verifica especificamente o mongodump e mongorestore versões.

Se você não os tiver, você pode usar as instruções de instalação no site do MongoDB para instalar o MongoDB Database Tools em seu sistema.

Clone uma coleção para o mesmo banco de dados


Você precisa executar o mongodump e mongorestore da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando). Não execute a partir do mongo Concha.

Aqui está um exemplo de código que clona uma coleção para o mesmo banco de dados:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

Nesse caso, fazemos backup dos pets coleta no PetHotel banco de dados e restaure-o como pets2 no mesmo banco de dados.

Isso usa mongodump para criar um arquivo de backup da coleção, então mongorestore para restaurar essa coleção com um nome diferente. Fizemos isso despejando a coleção no fluxo de saída padrão e canalizando para mongorestore .

Veja o que cada parâmetro faz:
Parâmetro Descrição
--archive Grava a saída em um arquivo especificado ou, se o arquivo não for especificado, grava na saída padrão (stdout ). No nosso caso, o arquivo não foi especificado, então ele gravou na saída padrão.
--db Especifica o banco de dados que contém a coleção que queremos clonar. Neste caso, o banco de dados é chamado de PetHotel .
--nsFrom Especifica a coleção no arquivo de despejo. Esta é a coleção que queremos clonar.
--nsTo Especifica o nome da coleção que deve ser usada quando restaurada. No nosso caso, chamamos de pets2 .

Copiar uma coleção para outro banco de dados


Você pode usar a mesma técnica para copiar a coleção para outro banco de dados. Nesse caso, você nem precisaria alterar o nome da coleção se não quiser.

Aqui está um exemplo:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'

Isso é muito semelhante ao exemplo anterior, exceto que nosso --nsTo argumento especifica PetHouse.pets como a coleção de destino.

Isso significa que a coleção clonada será chamada de pets , e estará localizado na PetHouse banco de dados (em vez do original PetHotel base de dados).