MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Copier/cloner une base de données dans MongoDB

Dans les versions antérieures de MongoDB, vous pouviez utiliser le copyDB commande ou sa méthode d'assistance, db.copyDatabase() pour copier une base de données.

MongoDB les a depuis dépréciés. De plus, à partir de la version 4.2, MongoDB a supprimé le copydb commande, et donc aussi la db.copyDatabase() , ce qui signifie que vous ne pouvez pas les utiliser même si vous le vouliez si vous utilisez MongoDB 4.2 ou une version ultérieure.

Heureusement, il existe un autre moyen de copier une base de données MongoDB.

Vérifiez les outils de base de données MongoDB

Dans MongoDB, vous pouvez cloner une base de données à l'aide des outils de base de données MongoDB. Plus précisément, vous pouvez utiliser mongodump et mongorestore .

Les outils de base de données MongoDB sont une suite d'utilitaires de ligne de commande permettant de travailler avec MongoDB.

Si vous n'êtes pas sûr d'avoir installé les outils de base de données MongoDB, essayez d'exécuter les commandes suivantes dans votre terminal ou invite de commande pour vérifier :

mongodump --version
mongorestore --version

Cela vérifie spécifiquement le mongodump et mongorestore versions.

Si vous ne les avez pas, vous pouvez utiliser les instructions d'installation sur le site Web de MongoDB pour installer les outils de base de données MongoDB sur votre système.

Exemple de clonage d'une base de données

Vous devez exécuter mongodump et mongorestore à partir de la ligne de commande de votre système (par exemple, une nouvelle fenêtre de terminal ou d'invite de commande). Ne l'exécutez pas depuis le mongo coquille.

Voici un exemple de code qui clone une base de données :

mongodump --archive --db=PetHotel | mongorestore --archive  --nsFrom='PetHotel.*' --nsTo='PetHouse.*'

Dans ce cas, nous sauvegardons le PetHotel base de données, puis restaurez toutes ses collections dans une base de données appelée PetHouse . En d'autres termes, nous avons cloné le PetHotel base de données comme PetHouse .

Cela utilise mongodump pour créer un fichier de sauvegarde de la base de données, puis mongorestore pour restaurer cette base de données sous un nom différent. Nous l'avons fait en vidant la base de données dans le flux de sortie standard et en la transférant dans mongorestore .

Voici ce que fait chaque paramètre :

Paramètre Description
--archive Écrit la sortie dans un fichier d'archive spécifié ou, si le fichier d'archive n'est pas spécifié, écrit dans la sortie standard (stdout ). Dans notre cas, le fichier d'archive n'est pas spécifié, il a donc été écrit sur la sortie standard.
--db Spécifie une base de données à sauvegarder. Dans ce cas, nous sauvegardons le PetHotel base de données.
--nsFrom Spécifie la collection dans le fichier de vidage. Le caractère générique astérisque (* ) spécifie toutes les collections.
--nsTo Spécifie le nom de collection qui doit être utilisé dans la base de données restaurée.

Vous pouvez également utiliser mongodump pour vider toutes les bases de données. Pour ce faire, exécutez simplement mongodump sans aucun argument. Cependant, lorsque vous faites cela, cela n'inclut pas le local et config bases de données dans son vidage.