Paar dingen:
- Over het algemeen cloneCollection wordt gebruikt voor verschillende mongo-instanties, maar niet om op dezelfde instanties te kopiëren.
- Ook als je
v4.2
. gebruikt je moet stoppen met het gebruik vancopyDB
&cloneCollection
omdat ze verouderd zijn compatibiliteit-met-v4.2 &begin mongodump te gebruiken en mongorestore of mongoexport &mongoimport . -
Ik zou willen voorstellen om mongodump . te gebruiken &mongorestore :
- Oorzaak mongodump zou de gegevenstypen van MongoDB behouden, d.w.z.;
bson
soorten. - mongodump maakt een binair bestand waarin als mongoexport zou
bson
. converteren naarjson
&nogmaals mongoimport converteertjson
naarbson
tijdens het schrijven, daarom zijn ze traag. U kunt mongoexport &mongoimport gebruiken wanneer u uw collectiegegevens visueel wilt analyseren ofjson
wilt gebruiken gegevens voor enig ander doel.
- Oorzaak mongodump zou de gegevenstypen van MongoDB behouden, d.w.z.;
-
U kunt onderstaand script in shell uitvoeren
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
mongodump gebruiken , moet u mongodump uitvoeren tegen een draaiende mongod of mongos-instantie. Dus deze commando's worden uitgevoerd in de verwachting dat Mongo correct is geïnstalleerd en de padinstelling goed is, zo niet, dan kunt u naar de Mongo-map navigeren en uitvoeren zoals ./mongodump
&./mongorestore
. Bovenstaand script is handig als u een back-up van meerdere collecties wilt maken. U hoeft een paar dingen in het script op te geven, zoals:
-
mongodump--host "All-shards"
-> Hier moet je alle shards specificeren als je MongoDB een replicaset is, zo niet, dan kun jelocalhost:27017
specificeren . -
mongorestore --host=host-shard-name
-> Je moet één shard van de replicaset specificeren, anders jelocalhost
, Weinig dingen hier kunnen optioneel zijn--ssl
,--username
,--password
. - Dus mongodump maakt een map aan met de naam dump voor de eerste keer die de submappen met dbNames zal hebben en elke submap heeft
bson
bestanden respectievelijk naar hun verzamelingsnamen zijn gedumpt, dus u moet verwijzen naardbName
in restore commando &collectienaam wordt overgenomen van variabelei
->./dump/dbName/"$i".bson
Opmerking: MongoDB v3.2
is zo oud en in de cloud gebaseerde MongoDB-service Mongo-atlas
het is al aan het einde van de levenscyclus, dus upgrade zo snel mogelijk. Als u op zoek bent naar een gratis mongo-instantie of wilt beginnen met MongoDB, kunt u atlas proberen.