Kopieren eine Sammlung innerhalb derselben Datenbank in MongoDB

Mehvish Ashiq 30 Januar 2023
  1. Kopieren eine Sammlung innerhalb derselben Datenbank, während Sie in MongoDB arbeiten
  2. Verwenden Sie mongodump und mongorestore, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren
  3. Verwenden Sie die aggregate()-Methode, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren
  4. Verwenden Sie die forEach()-Schleife, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren
Kopieren eine Sammlung innerhalb derselben Datenbank in MongoDB

Das Kopieren einer Sammlung innerhalb derselben Datenbank ist eine erstaunliche Aufgabe. es spart Zeit und Mühe. Dieses Tutorial demonstriert die Verwendung von mongodump, mongorestore, aggregate() und forEach() zum Kopieren einer Sammlung innerhalb derselben Datenbank mit MongoDB.

Kopieren eine Sammlung innerhalb derselben Datenbank, während Sie in MongoDB arbeiten

In den alten Versionen von MongoDB, zum Beispiel weniger als 3.0, konnten wir die Methode copyTo() als db.collection_name.copyTo() verwenden, um die Sammlung zu kopieren, aber das ist jetzt veraltet.

Auch das eval ist mit dem Start der MongoDB Version 4.2 veraltet. Bitte beachten Sie, dass db.collection_name.copyTo() das eval umschließt, was bedeutet, dass wir die Sammlung nicht kopieren können, indem wir eine von beiden verwenden, wenn wir MongoDB Version 4.2 oder höher haben.

In neuen Versionen von MongoDB gibt es einige andere Möglichkeiten, mit denen wir eine Sammlung innerhalb derselben Datenbank kopieren können. Einige davon sind hier angegeben.

  1. Verwenden Sie die Befehle mongodump und mongorestore
  2. Verwenden Sie die aggregate()-Methode
  3. Verwenden Sie die forEach()-Schleife

Fangen wir an, jeden von ihnen einzeln zu lernen.

Verwenden Sie mongodump und mongorestore, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren

Es ist der schnellste Weg, eine Sammlung innerhalb derselben Datenbank mit MongoDB Database Tools zu klonen/kopieren; insbesondere können wir mongodump und mongorestore verwenden. Das Datenbanktool ist eine Suite von Befehlszeilendienstprogrammen für die Arbeit in MongoDB.

Wir können die folgenden Befehle an der Windows-Eingabeaufforderung verwenden, um die Version von mongodump und mongorestore zu überprüfen. Wenn es die entsprechende Version erfolgreich zurückgibt, werden die Datenbanktools installiert.

Andernfalls folgen Sie hier, um die Datenbanktools zu installieren.

Beispielcode:

C:/Users/Dell> mongodump --version

Beispielcode:

C:/Users/Dell> mongorestore --version

Denken Sie daran, dass wir die Befehle mongodump und mongorestore von der Befehlszeile unseres Systems ausführen müssen, zum Beispiel die Eingabeaufforderung von Windows OS oder Terminal, wenn wir Ubuntu verwenden. Führen Sie diesen Befehl niemals über die Mongo-Shell aus.

Sobald wir die Datenbanktools für die Arbeit mit MongoDB haben, führen Sie den folgenden Befehl aus, um die Sammlung teachers in derselben Datenbank abzulegen: test.

Beispielcode:

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

AUSGANG:

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)

Die obige Ausgabe zeigt, dass die Dump-Datei unter dump\test\teachers.bson geschrieben wird. Also müssen wir es mit dem unten angegebenen Befehl wiederherstellen.

Beispielcode:

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

AUSGANG:

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.

Die Ausgabe sieht wie oben aus, was bedeutet, dass die Sammlung erfolgreich kopiert wurde. Die Zielsammlung mit dem Namen teachers1 wird erstellt, wenn sie in der aktuellen Datenbank nicht vorhanden ist.

Öffnen Sie als Nächstes die Mongo-Shell und führen Sie die folgende Abfrage aus, um festzustellen, ob die kopierte Sammlung vorhanden ist.

Beispielcode:

> show collections

AUSGANG:

teachers
teachers1

Alternativ können wir auch mit mongoexport die Sammlung (teachers) aus einer Datenbank (test) exportieren und dann mit mongoimport in die teachers2-Collection innerhalb derselben Datenbank importieren.

Beispielcode:

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

Verwenden Sie die aggregate()-Methode, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren

Beispielcode:

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

Dieser Befehl wird mit der Mongo-Shell ausgeführt. Danach verwenden wir den Befehl show collections, um zu sehen, ob teachers3 dort ist.

Beispielcode:

> show collections

AUSGANG:

teachers
teachers1
teachers2
teachers3

Wir verwenden die Aggregationspipeline, die die Daten aus der Sammlung Lehrer zurückgibt und sie in die angegebene Sammlung schreibt, die hier Lehrer3 ist. Wir können diesen Ansatz verwenden, wenn wir MongoDB Version 4.4 oder höher haben.

Verwenden Sie die forEach()-Schleife, um eine Sammlung innerhalb derselben Datenbank in MongoDB zu kopieren

Beispielcode:

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

Verwenden Sie die folgende Abfrage, um zu bestätigen, dass sich teachers4 in derselben Datenbank befindet.

Beispielcode:

> show collections

AUSGANG:

teachers
teachers1
teachers2
teachers3
teachers4

Diese Methode ist im Vergleich zu allen oben genannten Ansätzen die langsamste, da eine Schleife verwendet wird. Es iteriert über alle Dokumente der Quellsammlung und fügt sie nacheinander in die Zielsammlung ein.

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

Verwandter Artikel - MongoDB Collection