Copier une collection dans la même base de données dans MongoDB
- Copier une collection dans la même base de données tout en travaillant dans MongoDB
-
Utilisez
mongodump
etmongorestore
pour copier une collection dans la même base de données dans MongoDB -
Utilisez la méthode
aggregate()
pour copier une collection dans la même base de données dans MongoDB -
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 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.
- Utilisez les commandes
mongodump
etmongorestore
- Utilisez la méthode
aggregate()
- 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.