Ein paar Dinge :
- Im Allgemeinen cloneCollection wird für verschiedene Mongo-Instanzen verwendet, aber nicht zum Kopieren auf dieselben Instanzen.
- Auch wenn Sie
v4.2
verwenden Sie sollten aufhören,copyDB
zu verwenden &cloneCollection
weil sie veraltet sind Kompatibilität-mit-v4.2 &beginnen Sie mit der Verwendung von mongodump und mongorestore oder mongoexport &mongoimport . -
Ich würde vorschlagen, mongodump zu verwenden &mongorestore :
- Verursache mongodump würde die Datentypen von MongoDB beibehalten, dh;
bson
Typen. - mongodump erstellt ein binäres Where als mongoexport würde
bson
umwandeln zujson
&wieder mongoimport konvertiertjson
zubson
beim Schreiben, weshalb sie langsam sind. Sie können mongoexport &mongoimport verwenden, wenn Sie Ihre Sammlungsdaten visuell analysieren oderjson
verwenden möchten Daten für andere Zwecke.
- Verursache mongodump würde die Datentypen von MongoDB beibehalten, dh;
-
Sie können das folgende Skript in der Shell ausführen
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
Um mongodump zu verwenden , müssen Sie mongodump für eine laufende mongod- oder mongos-Instanz ausführen. Diese Befehle werden also in der Erwartung ausgeführt, dass Mongo ordnungsgemäß installiert ist und die Pfadeinstellung gut ist. Wenn nicht, können Sie zum Mongo-Ordner navigieren und wie ./mongodump
ausführen &./mongorestore
. Das obige Skript ist nützlich, wenn Sie mehrere Sammlungen sichern möchten. Sie müssen einige Dinge im Skript angeben, z. B. :
-
mongodump--host "All-shards"
-> Hier müssen Sie alle Shards angeben, wenn Ihre MongoDB ein Replikatsatz ist, wenn nicht, können Sielocalhost:27017
angeben . -
mongorestore --host=host-shard-name
-> Sie müssen einen Shard des Replikatsatzes angeben, andernfalls Ihrenlocalhost
, Einige Dinge hier können optional sein--ssl
,--username
,--password
. - Also mongodump erstellt einen Ordner namens dump zum ersten Mal, das die Unterordner mit dbNames haben wird, und jeder Unterordner wird
bson
haben Dateien entsprechend ihrer Sammlungsnamen ausgegeben, Sie müssen also aufdbName
verweisen im Wiederherstellungsbefehl und Sammlungsname wird aus Variablei
genommen ->./dump/dbName/"$i".bson
Hinweis: MongoDB v3.2
ist so alt und im Cloud-basierten MongoDB-Dienst Mongo-atlas
Es hat bereits das Ende seines Lebenszyklus erreicht, also aktualisieren Sie bitte so schnell wie möglich. Wenn Sie nach einer kostenlosen Mongo-Instanz suchen oder mit MongoDB beginnen, können Sie Atlas ausprobieren.