Poucas coisas :
- Em geral, cloneCollection é usado para diferentes instâncias do mongo, mas não para copiar nas mesmas instâncias.
- Também se você estiver usando a
v4.2
você deve parar de usarcopyDB
&cloneCollection
porque eles estão obsoletos compatibilidade-com-v4.2 e comece a usar mongodump e mongorestore ou mongoexport &mongoimport . -
Sugiro usar mongodump &mongorestore :
- Causa mongodump preservaria os tipos de dados do MongoDB, ou seja;
bson
tipos. - mongodump cria um binário onde como mongoexport converteria
bson
parajson
e novamente mongoimport converterájson
parabson
enquanto escreve, e é por isso que eles são lentos. Você pode usar mongoexport &mongoimport quando quiser analisar visualmente seus dados de coleções ou usarjson
dados para qualquer outra finalidade.
- Causa mongodump preservaria os tipos de dados do MongoDB, ou seja;
-
Você pode executar o script abaixo no shell
declare - a collections = ("collectionName1" "collectionName2") for i in "${collections[@]}" do echo "$i" mongodump --host "All-shards" --username=uname --password password --ssl --authenticationDatabase admin --db dbname --collection "$i" mongorestore --host=host-shard-name --port=27017 --username=uname --password=psswrd --ssl --authenticationDatabase=admin --db=dbname --collection= "$i" ./dump/dbName/"$i".bson; done
Para usar o mongodump , você deve executar o mongodump em uma instância mongod ou mongos em execução. Portanto, esses comandos estão sendo executados esperando que o mongo esteja instalado corretamente e a configuração do caminho seja boa, caso contrário, você pode navegar para a pasta mongo e executar como
./mongodump
&./mongorestore
. O script acima será útil se você quiser fazer backup de várias coleções, você precisa especificar algumas coisas no script, como:-
mongodump--host "All-shards"
-> Aqui você precisa especificar todos os shards se o seu MongoDB for um conjunto de réplicas, caso contrário, você pode especificarlocalhost:27017
.
-
mongorestore --host=host-shard-name
-> Você deve especificar um fragmento de conjunto de réplicas, senão seulocalhost
, Poucas coisas aqui podem ser opcionais--ssl
,--username
,--password
.
- Então mongodump irá criar uma pasta chamada dump pela primeira vez que terá as subpastas com dbNames e cada subpasta terá
bson
arquivos respectivos aos seus nomes de coleção despejados, então você precisa consultardbName
no comando de restauração e o nome da coleção será obtido da variáveli
->./dump/dbName/"$i".bson
Observação: MongoDB
v3.2
é tão antigo e no serviço MongoDB baseado em nuvem Mongo-atlas
ele já atingiu o fim do ciclo de vida, portanto, atualize o mais rápido possível. Se você está procurando uma instância mongo gratuita ou começando com o MongoDB - você pode tentar o atlas.