In früheren Versionen von MongoDB konnten Sie db.collection.copyTo()
verwenden Methode zum Kopieren einer Sammlung.
MongoDB hat diese Methode seitdem als veraltet markiert. Außerdem hat MongoDB ab Version 4.2 den eval
entfernt Befehl. Gegeben db.collection.copyTo()
umschließt eval
, das bedeutet, dass Sie keines davon verwenden können, wenn Sie MongoDB 4.2 oder höher verwenden.
Glücklicherweise gibt es eine andere Möglichkeit, eine MongoDB-Sammlung zu kopieren.
Suchen Sie nach MongoDB-Datenbanktools
In MongoDB können Sie eine Sammlung mit den MongoDB-Datenbanktools klonen. Insbesondere können Sie mongodump
verwenden und mongorestore
.
Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.
Wenn Sie sich nicht sicher sind, ob Sie die MongoDB-Datenbanktools installiert haben, versuchen Sie, die folgenden Befehle in Ihrem Terminal oder Ihrer Eingabeaufforderung auszuführen, um dies zu überprüfen:
mongodump --version
mongorestore --version
Das sucht speziell nach mongodump
und mongorestore
Versionen.
Wenn Sie sie nicht haben, können Sie die Installationsanweisungen auf der MongoDB-Website verwenden, um die MongoDB-Datenbanktools auf Ihrem System zu installieren.
Eine Sammlung in dieselbe Datenbank klonen
Sie müssen mongodump
ausführen und mongorestore
über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster). Führen Sie es nicht vom mongo
aus Hülse.
Hier ist ein Codebeispiel, das eine Sammlung in dieselbe Datenbank klont:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'
In diesem Fall sichern wir die pets
Abholung im PetHotel
Datenbank und stellen Sie sie dann als pets2
wieder her in derselben Datenbank.
Dies verwendet mongodump
um eine Sicherungsdatei der Sammlung zu erstellen, dann mongorestore
um diese Sammlung unter einem anderen Namen wiederherzustellen. Wir haben dies getan, indem wir die Sammlung in den Standardausgabestrom ausgegeben und in mongorestore
geleitet haben .
Hier ist, was jeder Parameter tut:
Parameter | Beschreibung |
---|---|
--archive | Schreibt die Ausgabe in eine angegebene Archivdatei oder, wenn die Archivdatei nicht angegeben ist, in die Standardausgabe (stdout ). In unserem Fall ist die Archivdatei nicht spezifiziert, also hat sie auf die Standardausgabe geschrieben. |
--db | Gibt die Datenbank an, die die zu klonende Sammlung enthält. In diesem Fall heißt die Datenbank PetHotel . |
--nsFrom | Gibt die Sammlung in der Dump-Datei an. Dies ist die Sammlung, die wir klonen möchten. |
--nsTo | Gibt den Sammlungsnamen an, der bei der Wiederherstellung verwendet werden soll. In unserem Fall nennen wir es pets2 . |
Eine Sammlung in eine andere Datenbank kopieren
Sie können dieselbe Technik verwenden, um die Sammlung in eine andere Datenbank zu kopieren. In diesem Fall müssten Sie nicht einmal den Namen der Sammlung ändern, wenn Sie dies nicht möchten.
Hier ist ein Beispiel:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'
Dies ist dem vorherigen Beispiel sehr ähnlich, außer dass unser --nsTo
Das Argument gibt PetHouse.pets
an als Zielsammlung.
Das bedeutet, dass die geklonte Sammlung pets
genannt wird , und es befindet sich im PetHouse
Datenbank (anstelle der ursprünglichen PetHotel
Datenbank).