Peu de choses :
- En général cloneCollection est utilisé pour différentes instances mongo mais pas pour copier sur les mêmes instances.
- Également si vous utilisez
v4.2
vous devriez arrêter d'utilisercopyDB
&cloneCollection
car ils sont obsolètes compatibilité-avec-v4.2 &commencer à utiliser mongodump et mongorestore ou mongoexport &mongoimport . -
Je suggérerais d'utiliser mongodump &mongostore :
- Parce que mongodump préserverait les types de données de MongoDB, c'est-à-dire ;
bson
type. - mongodump crée un binaire où comme mongoexport convertirait
bson
enjson
&encore mongoimport convertirajson
àbson
lors de l'écriture, c'est pourquoi ils sont lents. Vous pouvez utiliser mongoexport &mongoimport lorsque vous souhaitez analyser visuellement les données de vos collections ou utiliserjson
données à toute autre fin.
- Parce que mongodump préserverait les types de données de MongoDB, c'est-à-dire ;
-
Vous pouvez exécuter le script ci-dessous dans le 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
Pour utiliser mongodump , vous devez exécuter mongodump sur une instance mongod ou mongos en cours d'exécution. Donc, ces commandes sont exécutées en attendant que mongo soit correctement installé et que la configuration du chemin soit bonne, sinon vous pouvez accéder au dossier mongo et exécuter comme ./mongodump
&./mongorestore
. Le script ci-dessus sera utile si vous souhaitez sauvegarder plusieurs collections, vous devez spécifier quelques éléments dans le script comme :
-
mongodump--host "All-shards"
-> Ici, vous devez spécifier tous les fragments si votre MongoDB est un jeu de répliques, sinon vous pouvez spécifierlocalhost:27017
. -
mongorestore --host=host-shard-name
-> Vous devez spécifier un fragment de jeu de répliques, sinon votrelocalhost
, Peu de choses ici peuvent être facultatives--ssl
,--username
,--password
. - Alors mongodump va créer un dossier nommé dump pour la première fois qui aura les sous-dossiers avec dbNames &chaque sous-dossier aura
bson
fichiers respectifs à leurs noms de collection vidés, vous devez donc vous référer àdbName
dans la commande de restauration et le nom de la collection sera extrait de la variablei
->./dump/dbName/"$i".bson
Remarque : MongoDB v3.2
est si ancien et dans le service MongoDB basé sur le cloud Mongo-atlas
il a déjà atteint la fin de son cycle de vie, veuillez donc mettre à niveau dès que possible. Si vous recherchez une instance mongo gratuite ou si vous démarrez avec MongoDB, vous pouvez essayer atlas.