Copier une collection dans la même base de données dans MongoDB

Mehvish Ashiq 30 janvier 2023
  1. Copier une collection dans la même base de données tout en travaillant dans MongoDB
  2. Utilisez mongodump et mongorestore pour copier une collection dans la même base de données dans MongoDB
  3. Utilisez la méthode aggregate() pour copier une collection dans la même base de données dans MongoDB
  4. Utilisez la boucle forEach() pour copier une collection dans la même base de données dans MongoDB
Copier une collection dans la même base de données dans MongoDB

Copier une collection dans la même base de données est une tâche incroyable ; cela permet d’économiser du temps et des efforts. Ce didacticiel montre comment utiliser mongodump, mongorestore, aggregate() et forEach() pour copier une collection dans la même base de données à l’aide de MongoDB.

Copier une collection dans la même base de données tout en travaillant dans MongoDB

Dans les anciennes versions de MongoDB, par exemple inférieures à 3.0, nous pouvions utiliser la méthode copyTo() comme db.collection_name.copyTo() pour copier la collection, mais cela est désormais obsolète.

Le eval est également obsolète avec le démarrage de MongoDB version 4.2. Veuillez noter que le db.collection_name.copyTo() enveloppe le eval, ce qui signifie que nous ne pouvons pas copier la collection en utilisant l’un ou l’autre si nous avons la version 4.2 ou supérieure de MongoDB.

Il existe quelques autres moyens dans les nouvelles versions de MongoDB que nous pouvons utiliser pour copier une collection dans la même base de données. Quelques-uns d’entre eux sont donnés ici.

  1. Utilisez les commandes mongodump et mongorestore
  2. Utilisez la méthode aggregate()
  3. Utilisez la boucle forEach()

Commençons à apprendre chacun d’eux un par un.

Utilisez mongodump et mongorestore pour copier une collection dans la même base de données dans MongoDB

C’est le moyen le plus rapide de cloner/copier une collection dans la même base de données à l’aide des outils de base de données MongoDB ; en particulier, nous pouvons utiliser le mongodump et mongorestore. L’outil de base de données est une suite d’utilitaires de ligne de commande pour travailler dans MongoDB.

Nous pouvons utiliser les commandes suivantes sur l’invite de commande Windows pour vérifier la version de mongodump et mongorestore. S’il renvoie la version respective avec succès, les outils de base de données sont installés.

Sinon, suivez ceci pour installer les outils de base de données.

Exemple de code :

C:/Users/Dell> mongodump --version

Exemple de code :

C:/Users/Dell> mongorestore --version

N’oubliez pas que nous devons exécuter les commandes mongodump et mongorestore à partir de la ligne de commande de notre système, par exemple, l’invite de commande du système d’exploitation Windows ou du terminal si nous utilisons Ubuntu. N’exécutez jamais cette commande à partir du shell mongo.

Une fois que nous avons les outils de base de données pour travailler avec MongoDB, exécutez la commande suivante pour vider la collection teachers dans la même base de données : test.

Exemple de code :

C:/Users/Dell> mongodump -d test -c teachers

PRODUCTION:

2022-05-27T13:05:14.497+0500    writing test.teachers to dump\test\teachers.bson
2022-05-27T13:05:14.503+0500    done dumping test.teachers (3 documents)

La sortie ci-dessus montre que le fichier de vidage est écrit dans dump\test\teachers.bson. Nous devons donc le restaurer à l’aide de la commande ci-dessous.

Exemple de code :

C:/Users/Dell>mongorestore -d test -c teachers1 --dir=dump/<db>/<sourcecollection.bson>

PRODUCTION:

2022-05-27T13:05:28.085+0500    checking for collection data in dump\test\teachers.bson
2022-05-27T13:05:28.088+0500    reading metadata for test.teachers1 from dump\test\teachers.metadata.json
2022-05-27T13:05:28.252+0500    restoring test.teachers1 from dump\test\teachers.bson
2022-05-27T13:05:28.312+0500    finished restoring test.teachers1 (3 documents, 0 failures)
2022-05-27T13:05:28.312+0500    no indexes to restore for collection test.teachers1
2022-05-27T13:05:28.313+0500    3 document(s) restored successfully. 0 document(s) failed to restore.

La sortie ressemblera à ce qui précède, ce qui signifie que la collection est copiée avec succès. La collection cible nommée teachers1 sera créée si elle n’existe pas dans la base de données courante.

Ensuite, ouvrez le shell mongo et exécutez la requête suivante pour voir si la collection copiée est là.

Exemple de code :

> show collections

PRODUCTION:

teachers
teachers1

Alternativement, nous pouvons également utiliser mongoexport pour exporter la collection (teachers) d’une base de données (test) puis utiliser mongoimport pour l’importer dans la collection teachers2 de la même base de données.

Exemple de code :

C:/Users/Dell> mongoexport -d test -c teachers | mongoimport -d test -c teachers2 --drop

Utilisez la méthode aggregate() pour copier une collection dans la même base de données dans MongoDB

Exemple de code :

> db.teachers.aggregate([{$out: "teachers3"}])

Cette commande est exécutée à l’aide du shell mongo. Après cela, nous utilisons la commande show collections pour voir si teachers3 est là.

Exemple de code :

> show collections

PRODUCTION:

teachers
teachers1
teachers2
teachers3

Nous utilisons le pipeline d’agrégation qui renvoie les données de la collection teachers et les écrit dans la collection spécifiée, qui est teachers3 ici. Nous pouvons utiliser cette approche si nous avons MongoDB version 4.4 ou supérieure.

Utilisez la boucle forEach() pour copier une collection dans la même base de données dans MongoDB

Exemple de code :

> db.teachers.find().forEach((doc) => {
    db.teachers4.insert(doc)
  })

Utilisez la requête suivante pour confirmer que teachers4 réside dans la même base de données.

Exemple de code :

> show collections

PRODUCTION:

teachers
teachers1
teachers2
teachers3
teachers4

Cette méthode est la plus lente par rapport à toutes les approches ci-dessus en raison de l’utilisation d’une boucle. Il itère sur tous les documents de la collection source et les insère un par un dans la collection cible.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Article connexe - MongoDB Collection