Kopieren/Klonen Sie eine Datenbank in MongoDB
-
Verwenden Sie den Befehl
db.collection.copyTo()
, um eine Datenbank in MongoDB zu kopieren/klonen -
Verwenden Sie den Befehl
db.collection.find().forEach()
, um eine Datenbank in MongoDB zu kopieren/klonen -
Verwenden Sie die Tools
mongodump
undmongorestore
, um eine Datenbank in MongoDB zu kopieren/klonen -
Verwenden Sie die Tools
mongoexport
undmongoimport
, um eine Datenbank in MongoDB zu kopieren/klonen - Tool zum Sammeln von Duplikaten von NoSQL Manager für MongoDB
- Sammlung in ein anderes Datenbanktool von NoSQL Manager for MongoDB kopieren
Es gibt mehrere Möglichkeiten, wie der Benutzer eine Sammlung innerhalb derselben oder einer anderen MongoDB-Datenbank klonen kann. In diesem MongoDB-Tutorial-Artikel wird erläutert, wie der Benutzer eine Datenbank in MongoDB und ihre Daten kopieren/klonen kann.
Verwenden Sie den Befehl db.collection.copyTo()
, um eine Datenbank in MongoDB zu kopieren/klonen
Dieser Befehl verwendet serverseitiges JavaScript, um alle Dokumente von collection
nach newCollection
zu kopieren. MongoDB generiert eine neue Sammlung, wenn sie nicht vorhanden ist.
Sie müssen alle Aktionen auf allen Ressourcen haben, um db.collection.copyTo()
auszuführen, wenn die Berechtigung aktiviert ist. Wenn Ihr Unternehmen erfordert, dass ein Benutzer db.collection.copyTo()
ausführt, erstellen Sie eine Rolle, die anyAction
auf anyResource
gewährt.
Diese Rolle sollte keinem anderen Benutzer zugewiesen werden.
Parameter | Typ | Beschreibung |
---|---|---|
newCollection |
Schnur | Der Name der Sammlung, in die Daten geschrieben werden. |
Überprüfen Sie Feldtypen, während Sie db.collection.copyTo()
verwenden, um sicherzustellen, dass die Operation keine Typinformationen aus Dokumenten während der BSON-zu-JSON-Konvertierung löscht.
Intern wird der Befehl eval
von der Methode db.collection.copyTo()
verwendet. Als Ergebnis nimmt die Operation db.collection.copyTo()
eine globale Sperre, die alle anderen Lese- oder Schreibaktivitäten verhindert, bis die Operation db.collection.copyTo()
abgeschlossen ist.
Die Anzahl der kopierten Dokumente wird von copyTo()
zurückgegeben. Wenn das Kopieren fehlschlägt, wird eine Ausnahme ausgelöst. Da copyTo()
intern eval
verwendet, blockieren Kopieraktionen auf der mongod
-Instanz alle anderen Operationen.
Beispielsweise kopiert die folgende Operation alle Dokumente aus der Sammlung Quelle
in die Sammlung Ziel
.
db.collection1.copyTo("collection2")
- Dieser Befehl kann nur in MongoDB 4.0 oder früheren Versionen ausgeführt werden.
- Es klont die Sammlung nur in dieselbe Datenbank.
- Es ist extrem langsam.
- Sammlungseigenschaften und Indizes werden nicht kopiert.
Verwenden Sie den Befehl db.collection.find().forEach()
, um eine Datenbank in MongoDB zu kopieren/klonen
Dieser Befehl durchläuft den Cursor und wendet eine JavaScript-Funktion auf jedes Dokument an. Die Prototypform der forEach()
-Methode sieht wie folgt aus:
db.collection.find().forEach(<function>)
Die Methode forEach()
hat den folgenden Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
function |
JavaScript | A JavaScriptfunction to apply to each document from the cursor. The <function> signature includes a single argument passed the current document to process. |
Beispiel:
db.collection1.find().forEach(
function(docs){
db.collection2.insert(docs);
})
- Dieser Befehl kann die Sammlung nur auf denselben Server klonen.
- Es ist sehr langsam.
- Sammlungseigenschaften und Indizes werden nicht kopiert.
Verwenden Sie die Tools mongodump
und mongorestore
, um eine Datenbank in MongoDB zu kopieren/klonen
Um eine Datenbank in früheren Versionen von MongoDB zu duplizieren, können Sie den Befehl copyDB
oder seine Hilfsmethode db.copyDatabase()
verwenden. MongoDB hat diese jedoch später als veraltet markiert.
Außerdem hat MongoDB ab Version 4.2 den Befehl copydb
und die Methode db.copyDatabase()
gelöscht, sodass Sie diese nicht verwenden können, wenn Sie MongoDB 4.2 oder höher verwenden. Es gibt jedoch einen anderen Ansatz zum Duplizieren einer MongoDB-Datenbank.
Die MongoDB Database Tools können verwendet werden, um eine Datenbank in MongoDB zu klonen. Sie können die Befehle mongodump
und mongorestore
verwenden.
MongoDB Database Tools ist eine Sammlung von Befehlszeilentools für den Umgang mit MongoDB. Wenn Sie nicht sicher sind, ob Sie die MongoDB-Datenbanktools installiert haben, verwenden Sie Ihr Terminal oder Ihre Eingabeaufforderung, um Folgendes zu überprüfen:
mongodump --version
mongorestore --version
Dieser Code sucht hauptsächlich nach den Versionen von mongodump
und mongorestore.
. Wenn Sie sie noch nicht haben, können Sie MongoDB Database Tools auf Ihrem PC installieren, indem Sie die Installationsanweisungen auf der MongoDB-Website befolgen.
Sie müssen die Befehlszeile Ihres Systems verwenden, um mongodump
und mongorestore
auszuführen (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster). Es sollte nicht von der Mongo-Shell ausgeführt werden.
Hier ist ein Beispiel für Code zum Klonen von Datenbanken:
mongodump --archive --db=CatHotel | mongorestore --archive --nsFrom='CatHotel.*' --nsTo='CatHouse.*'
In diesem Fall sichern wir die Datenbank CatHotel
und stellen dann alle ihre Sammlungen in einer Datenbank namens CatHouse
wieder her. Mit anderen Worten, wir haben die Datenbank CatHotel
als CatHouse
geklont.
Dieser erzeugt mit mongodump
eine Datenbank-Backup-Datei, gefolgt von mongorestore
, um die Datenbank unter neuem Namen wiederherzustellen. Zuerst wurde die Datenbank in den Standard-Ausgabestrom gedumpt und an mongorestore
geleitet.
Hier ist, was jeder Parameter tut:
Parameter | Beschreibung |
---|---|
archive |
Es schreibt die Ausgabe in eine angegebene Archivdatei oder in die Standardausgabe (stdout ), wenn die Archivdatei nicht angegeben ist. In Ihrem Fall ist die Archivdatei nicht angegeben, sodass sie in die Standardausgabe geschrieben wird. |
db |
Es wird eine zu sichernde Datenbank angegeben. In diesem Fall sichern Sie die Datenbank CatHotel . |
nsFrom |
Es wird die Sammlung in der Dump-Datei angeben. Der Platzhalter Sternchen (* ) bedeutet alle Sammlungen. |
nsTo |
Es gibt den Sammlungsnamen an, der in der wiederhergestellten Datenbank verwendet werden muss. |
Sie können auch alle Datenbanken mit mongodump
sichern und ohne Parameter ausführen. Die Datenbanken local
und config
werden dabei jedoch nicht in den Dump aufgenommen.
- Es ist eine Hochgeschwindigkeitsmethode.
- Es kann Sammlungen auf eine andere Datenbank und einen anderen Server klonen.
Verwenden Sie die Tools mongoexport
und mongoimport
, um eine Datenbank in MongoDB zu kopieren/klonen
Das MongoDB-Werkzeugpaket enthält die Werkzeuge mongoexport
und mongoimport
. Das Toolpaket steht im MongoDB Download Center zum Download bereit.
Führen Sie beispielsweise den folgenden Befehl in der Befehlszeile aus:
mongoexport.exe /host:<host> /port:<port> /db:test /collection:collection1 /out:collection1.json
mongoimport.exe /host:<host> /port:<port> /db:test /collection:collection2 /file:collection1.json
- Es ist eine schnelle Methode.
- Es kann Sammlungen auf eine andere Datenbank und einen anderen Server klonen.
- Sammlungseigenschaften und Indizes werden nicht kopiert.
Tool zum Sammeln von Duplikaten von NoSQL Manager für MongoDB
Duplicate Collection ist eine professionelle Funktion. Es ermöglicht das sehr schnelle Duplizieren von Sammlungen innerhalb derselben Datenbank.
Klicken Sie im DB-Explorer mit der rechten Maustaste auf die Sammlung Sammlung1
und wählen Sie im Popup-Menü den Eintrag Sammlung1
duplizieren.
Geben Sie den Namen der Zielsammlung und die Duplizierungsparameter an und klicken Sie auf Duplizieren.
- Es ist eine Hochgeschwindigkeitsmethode.
- Es kopiert Sammlungseigenschaften und Indizes.
- Es kann Sammlungen nur in dieselbe Datenbank klonen.
Sammlung in ein anderes Datenbanktool von NoSQL Manager for MongoDB kopieren
Sammlung in eine andere Datenbank kopieren ist eine professionelle Funktion von NoSQL Manager for MongoDB Pro. Es ermöglicht das Kopieren einer oder mehrerer Sammlungen zwischen Datenbanken und Servern.
Klicken Sie im DB Explorer mit der rechten Maustaste auf Sammlung1
und wählen Sie im Popup-Menü Sammlung Sammlung1
in ein anderes Datenbankelement kopieren.
Geben Sie die Zieldatenbank und zusätzliche Parameter an und klicken Sie auf Ausführen.
- Es ist eine schnelle Methode.
- Es kopiert Sammlungseigenschaften und Indizes.
- Es kann die Sammlung auf eine andere Datenbank und einen anderen Server kopieren.
- Es kann mehrere Sammlungen gleichzeitig kopieren.
- Es kann die Sammlung nicht umbenennen.