Kopieren/Klonen Sie eine Datenbank in MongoDB

Tahseen Tauseef 15 Februar 2024
  1. Verwenden Sie den Befehl db.collection.copyTo(), um eine Datenbank in MongoDB zu kopieren/klonen
  2. Verwenden Sie den Befehl db.collection.find().forEach(), um eine Datenbank in MongoDB zu kopieren/klonen
  3. Verwenden Sie die Tools mongodump und mongorestore, um eine Datenbank in MongoDB zu kopieren/klonen
  4. Verwenden Sie die Tools mongoexport und mongoimport, um eine Datenbank in MongoDB zu kopieren/klonen
  5. Tool zum Sammeln von Duplikaten von NoSQL Manager für MongoDB
  6. Sammlung in ein anderes Datenbanktool von NoSQL Manager for MongoDB kopieren
Kopieren/Klonen Sie eine Datenbank in MongoDB

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")
  1. Dieser Befehl kann nur in MongoDB 4.0 oder früheren Versionen ausgeführt werden.
  2. Es klont die Sammlung nur in dieselbe Datenbank.
  3. Es ist extrem langsam.
  4. 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);
})
  1. Dieser Befehl kann die Sammlung nur auf denselben Server klonen.
  2. Es ist sehr langsam.
  3. 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.

  1. Es ist eine Hochgeschwindigkeitsmethode.
  2. 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
  1. Es ist eine schnelle Methode.
  2. Es kann Sammlungen auf eine andere Datenbank und einen anderen Server klonen.
  3. 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.

Doppelte Sammlung

Geben Sie den Namen der Zielsammlung und die Duplizierungsparameter an und klicken Sie auf Duplizieren.

Doppelsammlung 1

  1. Es ist eine Hochgeschwindigkeitsmethode.
  2. Es kopiert Sammlungseigenschaften und Indizes.
  3. 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.

Doppelsammlung 2

Geben Sie die Zieldatenbank und zusätzliche Parameter an und klicken Sie auf Ausführen.

Doppelsammlung 3

  1. Es ist eine schnelle Methode.
  2. Es kopiert Sammlungseigenschaften und Indizes.
  3. Es kann die Sammlung auf eine andere Datenbank und einen anderen Server kopieren.
  4. Es kann mehrere Sammlungen gleichzeitig kopieren.
  5. Es kann die Sammlung nicht umbenennen.

Verwandter Artikel - MongoDB Database