Pár věcí :
- Obecně cloneCollection se používá pro různé mongo instance, ale ne ke kopírování na stejné instance.
- Také pokud používáte
v4.2měli byste přestat používatcopyDB&cloneCollectionprotože jsou zastaralé kompatibilita-s-v4.2 a začněte používat mongodump a mongorestore nebo mongoexport &mongoimport . -
Navrhoval bych použít mongodump a mongorestore :
- Příčina mongodump by zachovalo datové typy MongoDB, tj.;
bsontypy. - mongodump vytvoří binární soubor, kde jako mongoexport převede
bsondojsona znovu mongoimport převedejsonnabsonpři psaní, proto jsou pomalé. Můžete použít mongoexport a mongoimport, když chcete data sbírek analyzovat vizuálně, nebo použítjsonúdaje pro jakýkoli jiný účel.
- Příčina mongodump by zachovalo datové typy MongoDB, tj.;
-
Níže uvedený skript můžete spustit v shellu
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
Chcete-li použít mongodump , musíte spustit mongodump proti běžící instanci mongoda nebo mongos. Takže tyto příkazy se spouštějí s očekáváním, že mongo je správně nainstalováno a nastavení cesty je dobré, pokud ne, můžete přejít do složky mongo a spustit jako ./mongodump &./mongorestore . Výše uvedený skript bude užitečný, pokud chcete zálohovat více kolekcí. Ve skriptu musíte zadat několik věcí, například:
-
mongodump--host "All-shards"-> Zde musíte zadat všechny fragmenty, pokud je vaše MongoDB sada replik, pokud ne, můžete zadatlocalhost:27017. -
mongorestore --host=host-shard-name-> Musíte zadat jeden fragment sady replik, jinak vášlocalhost, Několik věcí zde může být volitelných--ssl,--username,--password. - Takže mongodump vytvoří složku s názvem dump poprvé, která bude mít podsložky s dbNames a každá podsložka bude mít
bsonsoubory odpovídající jejich názvům kolekcí, takže musíte odkazovat nadbNamev příkazu obnovení a název kolekce bude převzat z proměnnéi->./dump/dbName/"$i".bson
Poznámka: MongoDB v3.2 je tak stará a cloudová služba MongoDB Mongo-atlas
již dosáhl konce svého životního cyklu, takže jej prosím upgradujte co nejdříve. Pokud hledáte bezplatnou mongo instanci nebo začínáte s MongoDB – můžete zkusit atlas.