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

Copier/cloner une collection dans MongoDB

Dans les versions antérieures de MongoDB, vous pouviez utiliser le db.collection.copyTo() méthode pour copier une collection.

MongoDB a depuis déprécié cette méthode. De plus, à partir de la version 4.2, MongoDB a supprimé le eval commande. Étant donné db.collection.copyTo() enveloppe eval , cela signifie que vous ne pouvez pas utiliser l'un ou l'autre si vous utilisez MongoDB 4.2 ou une version ultérieure.

Heureusement, il existe un autre moyen de copier une collection MongoDB.

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

Dans MongoDB, vous pouvez cloner une collection à 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.

Cloner une collection dans la même 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 collection dans la même base de données :

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

Dans ce cas, nous sauvegardons les pets collecte dans le PetHotel base de données, puis restaurez-la en tant que pets2 dans la même base de données.

Cela utilise mongodump pour créer un fichier de sauvegarde de la collection, puis mongorestore pour restaurer cette collection sous un nom différent. Nous l'avons fait en déversant la collection 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 la base de données qui contient la collection que nous voulons cloner. Dans ce cas, la base de données s'appelle PetHotel .
--nsFrom Spécifie la collection dans le fichier de vidage. C'est la collection que nous voulons cloner.
--nsTo Spécifie le nom de collection qui doit être utilisé lors de la restauration. Dans notre cas, nous l'appelons pets2 .

Copier une collection dans une autre base de données

Vous pouvez utiliser la même technique pour copier la collection dans une autre base de données. Dans ce cas, vous n'auriez même pas besoin de changer le nom de la collection si vous ne le souhaitez pas.

Voici un exemple :

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

Ceci est très similaire à l'exemple précédent, sauf que notre --nsTo l'argument spécifie PetHouse.pets comme collection de destination.

Cela signifie que la collection clonée s'appellera pets , et il sera situé dans le PetHouse base de données (au lieu de l'original PetHotel base de données).