MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kopieren/Klonen Sie eine Sammlung in MongoDB

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).