Der Autor hat den COVID-19 Relief Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.
MongoDB ist eine der beliebtesten NoSQL-Datenbank-Engines. Es ist berühmt für seine Skalierbarkeit, Leistung, Zuverlässigkeit und Benutzerfreundlichkeit. In diesem Artikel zeigen wir Ihnen, wie Sie Ihre MongoDB-Datenbanken importieren und exportieren.
Wir sollten klarstellen, dass unter Import und Export diejenigen Vorgänge zu verstehen sind, die Daten in einem für Menschen lesbaren Format verarbeiten, das mit anderen Softwareprodukten kompatibel ist. Im Gegensatz dazu erstellen oder verwenden die Sicherungs- und Wiederherstellungsvorgänge MongoDB-spezifische Binärdaten, wodurch die Konsistenz und Integrität Ihrer Daten sowie deren spezifische MongoDB-Attribute erhalten bleiben. Daher ist es für die Migration normalerweise vorzuziehen, Backup und Wiederherstellung zu verwenden, solange das Quell- und das Zielsystem kompatibel sind.
Backup-, Wiederherstellungs- und Migrationsaufgaben gehen über den Rahmen dieses Artikels hinaus. Weitere Informationen finden Sie unter So sichern Sie eine MongoDB-Datenbank unter Ubuntu 20.04.
Um dieses Tutorial zu absolvieren, benötigen Sie Folgendes:
Um zu erfahren, wie Informationen in MongoDB importiert werden, verwenden wir eine beliebte Beispiel-MongoDB-Datenbank über Restaurants. Sie ist im .json-Format und kann mit wget
wie folgt heruntergeladen werden:
- wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json
Sobald der Download abgeschlossen ist, sollten Sie eine Datei mit dem Namen primer-dataset.json
(12 MB Größe) im aktuellen Verzeichnis haben. Importieren wir die Daten aus dieser Datei in eine neue Datenbank namens newdb
und in eine Sammlung mit dem Namen Restaurants
.
Verwenden Sie den Befehl mongoimport
wie folgt:
- sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json
Das Ergebnis sieht folgendermaßen aus:
Output2020-11-11T19:37:55.607+0000 connected to: mongodb://localhost/
2020-11-11T19:37:57.841+0000 25359 document(s) imported successfully. 0 document(s) failed to import
Wie der obige Befehl zeigt, wurden 25359 Dokumente importiert. Da wir keine Datenbank mit dem Namen newdb
haben, hat MongoDB sie automatisch erstellt.
Überprüfen wir den Import.
Stellen Sie eine Verbindung mit der neu erstellten newdb
-Datenbank her:
- sudo mongo newdb
Sie sind nun mit der newdb
-Datenbankinstanz verbunden. Beachten Sie, dass sich Ihre Eingabeaufforderung geändert hat, was anzeigt, dass Sie mit der Datenbank verbunden sind.
Zählen Sie die Dokumente in der Sammlung Restaurants mit dem Befehl:
- db.restaurants.count()
Das Ergebnis zeigt 25359
, was die Anzahl importierter Dokumente ist. Für eine noch bessere Überprüfung können Sie das erste Dokument aus der Sammlung Restaurants wie folgt auswählen:
- db.restaurants.findOne()
Das Ergebnis sieht folgendermaßen aus:
[secondary label Output]
{
"_id" : ObjectId("5fac3d937f12c471b3f26733"),
"address" : {
"building" : "1007",
"coord" : [
-73.856077,
40.848447
],
"street" : "Morris Park Ave",
"zipcode" : "10462"
},
"borough" : "Bronx",
"cuisine" : "Bakery",
"grades" : [
{
"date" : ISODate("2014-03-03T00:00:00Z"),
"grade" : "A",
"score" : 2
},
...
],
"name" : "Morris Park Bake Shop",
"restaurant_id" : "30075445"
}
Eine solche detaillierte Überprüfung kann Probleme mit den Dokumenten wie ihrem Inhalt, der Codierung usw. enthüllen. Das Format json verwendet UTF-8
-Codierung und Ihre Exporte und Importe sollten in dieser Codierung vorhanden sein. Denken Sie daran, wenn Sie die json-Dateien manuell bearbeiten. Andernfalls verarbeitet MongoDB dies automatisch für Sie.
Um die MongoDB-Eingabeaufforderung zu beenden, geben Sie exit
an die Eingabeaufforderung ein:
- exit
Sie werden als non-root user zur normalen Befehlszeilenaufforderung zurückgegeben.
Wie bereits erwähnt, können Sie durch den Export von MongoDB-Informationen eine für Menschen lesbare Textdatei mit Ihren Daten abrufen. Standardmäßig werden Informationen im JSON-Format exportiert. Sie können sie jedoch auch nach CSV exportieren (durch Kommas getrennter Wert).
Um Informationen aus MongoDB zu exportieren, verwenden Sie den Befehl mongoexport
. Es ermöglicht Ihnen, einen sehr feinkörnigen Export zu exportieren, sodass Sie eine Datenbank, eine Sammlung, ein Feld und sogar eine Abfrage für den Export angeben können.
Ein einfaches mongoexport
-Beispiel wäre die Sammlung Restaurants aus der newdb
-Datenbank, die wir zuvor importiert haben. Dies kann wie folgt erfolgen:
- sudo mongoexport --db newdb -c restaurants --out newdbexport.json
Im obigen Befehl verwenden wir --db
, um die Datenbank -c
für die Sammlung und --out
für die Datei zu spezifizieren, in der die Daten gespeichert werden.
Die Ausgabe eines erfolgreichen mongoexport
sollte folgendermaßen aussehen:
Output2020-11-11T19:39:57.595+0000 connected to: mongodb://localhost/
2020-11-11T19:39:58.619+0000 [###############.........] newdb.restaurants 16000/25359 (63.1%)
2020-11-11T19:39:58.871+0000 [########################] newdb.restaurants 25359/25359 (100.0%)
2020-11-11T19:39:58.871+0000 exported 25359 records
Die obige Ausgabe zeigt, dass 25359 Dokumente importiert wurden, die gleiche Anzahl wie die importierten sind.
In einigen Fällen müssen Sie möglicherweise nur einen Teil Ihrer Sammlung exportieren. Angesichts der Struktur und den Inhalt der Restaurants-json-Datei exportieren wir alle Restaurants, die die Kriterien erfüllen, die sich in der Bronx befinden und chinesische Küche anbieten. Wenn wir diese Informationen direkt während der Verbindung mit MongoDB erhalten möchten, stellen Sie erneut eine Verbindung zur Datenbank her:
- sudo mongo newdb
Verwenden Sie dann diese Abfrage:
- db.restaurants.find( { "borough": "Bronx", "cuisine": "Chinese" } )
Die Ergebnisse werden dem Terminal angezeigt:
- Output2020-12-03T01:35:25.366+0000 connected to: mongodb://localhost/
- 2020-12-03T01:35:25.410+0000 exported 323 records
Um die MongoDB-Eingabeaufforderung zu beenden, geben Sie exit
ein:
- exit
Wenn Sie die Daten von einer sudo-Befehlszeile exportieren möchten, anstatt mit der Datenbank verbunden zu sein, machen Sie die vorherige Abfrage zu einem Teil des mongoexport
-Befehls, indem Sie sie für das Argument -q
wie folgt angeben:
- sudo mongoexport --db newdb -c restaurants -q "{\"borough\": \"Bronx\", \"cuisine\": \"Chinese\"}" --out Bronx_Chinese_retaurants.json
Beachten Sie, dass wir die doppelten Anführungszeichen mit Backslash (\
) in der Abfrage umgehen. Ähnlich müssen Sie alle anderen Sonderzeichen in der Abfrage umgehen.
Wenn der Export erfolgreich war, sollte das Ergebnis folgendermaßen aussehen:
Output2020-11-11T19:49:21.727+0000 connected to: mongodb://localhost/
2020-11-11T19:49:21.765+0000 exported 323 records
Das obige Beispiel zeigt, dass 323 Datensätze exportiert wurden, und Sie können sie in der von uns angegebenen Datei Bronx_Chinese_retaurants.json
finden.
Verwenden Sie cat
und less
, um die Daten zu durchsuchen:
- cat Bronx_Chinese_retaurants.json | less
Verwenden Sie SPACE
, um die Daten zu übermitteln:
- Outputdate":{"$date":"2015-01-14T00:00:00Z"},"grade":"Z","score":36}],"na{"_id":{"$oid":"5fc8402d141f5e54f9054f8d"},"address":{"building":"1236","coord":[-73.8893654,40.81376179999999],"street":"238 Spofford Ave","zipcode":"10474"},"borough":"Bronx","cuisine":"Chinese","grades":[{"date":{"$date":"2013-12-30T00:00:00Z"},"grade":"A","score":8},{"date":{"$date":"2013-01-08T00:00:00Z"},"grade":"A","score":10},{"date":{"$date":"2012-06-12T00:00:00Z"},"grade":"B","score":15}],
-
- . . .
Drücken Sie q
, um zu beenden. Sie können nun eine MongoDB-Datenbank importieren und exportieren.
Dieser Artikel hat Sie in die Grundlagen zum Importieren und Exportieren von Informationen zu und aus einer MongoDB-Datenbank eingeführt. Sie können weitere Informationen über So sichern Sie eine MongoDB-Datenbank unter Ubuntu 20.04 lesen.
Sie können auch die Replikation berücksichtigen. Durch die Replikation können Sie Ihren MongoDB-Dienst ohne Unterbrechung von einem Slave-MongoDB-Server aus fortsetzen, während Sie den Master-Dienst nach einem Fehler wiederherstellen. Teil der Replikation ist das Betriebsprotokoll (oplog), das alle Operationen aufzeichnet, die Ihre Daten ändern. Sie können dieses Protokoll genauso verwenden wie das Binärprotokoll in MySQL, um Ihre Daten nach dem letzten Backup wiederherzustellen. Denken Sie daran, dass Backups normalerweise nachts stattfinden. Wenn Sie sich entscheiden, abends einen Backup wiederherzustellen, fehlen Ihnen alle Aktualisierungen seit dem letzten Backup.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!