MongoDB Daten importieren

MongoDBBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die wesentlichen Fähigkeiten für den Import von Daten in eine MongoDB-Datenbank. Sie werden mit zwei gängigen Datenformaten arbeiten: JSON und CSV. Sie verwenden das Kommandozeilen-Tool mongoimport, um Daten aus Dateien in MongoDB-Collections zu laden. Das Lab führt Sie durch den Import von Daten, die Angabe von Datentypen während des Imports und die Überprüfung, ob die Daten korrekt geladen wurden, mithilfe von Abfragen und dem mongoexport-Tool.

Daten aus einer JSON-Datei importieren

In diesem ersten Schritt importieren Sie Daten aus einer JSON-Datei in eine MongoDB-Collection. JSON (JavaScript Object Notation) ist ein natives Format für MongoDB, was den Importprozess unkompliziert macht. Wir verwenden das Dienstprogramm mongoimport, ein Kommandozeilen-Tool, das für diesen Zweck entwickelt wurde.

Eine Beispieldatei namens books.json wurde für Sie im Verzeichnis ~/project erstellt. Untersuchen Sie zunächst deren Inhalt über Ihr Terminal.

cat ~/project/books.json

Sie sollten die folgende Ausgabe sehen, die ein Array von JSON-Dokumenten darstellt:

[
  {
    "_id": 1,
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023,
    "tags": ["mongodb", "database", "nosql"]
  },
  {
    "_id": 2,
    "title": "Python Programming",
    "author": "John Doe",
    "year": 2022,
    "tags": ["python", "programming"]
  },
  {
    "_id": 3,
    "title": "Data Science Handbook",
    "author": "Alice Johnson",
    "year": 2021,
    "tags": ["data science", "python", "machine learning"]
  }
]

Importieren Sie nun diese Daten in eine neue Datenbank namens library_db und eine Collection namens books.

mongoimport --db library_db --collection books --file ~/project/books.json --jsonArray

Lassen Sie uns die Optionen des Befehls aufschlüsseln:

  • --db library_db: Gibt die Zieldatenbank an.
  • --collection books: Gibt die Ziel-Collection innerhalb der Datenbank an.
  • --file ~/project/books.json: Gibt den Pfad zur Eingabedatei an.
  • --jsonArray: Informiert mongoimport, dass die Datei ein einzelnes JSON-Array enthält, wobei jedes Element ein einzufügendes Dokument ist.

Sie sehen eine Ausgabe, die den Fortschritt und den Abschluss des Imports anzeigt:

2025-08-27T15:10:40.411+0800    connected to: mongodb://localhost/
2025-08-27T15:10:40.417+0800    3 document(s) imported successfully. 0 document(s) failed to import.

Um zu überprüfen, ob die Daten korrekt importiert wurden, verbinden Sie sich nun mit MongoDB über die MongoDB Shell, mongosh.

mongosh

Sobald Sie sich in der Shell befinden, wechseln Sie zur Datenbank library_db:

use library_db

Zählen Sie nun die Dokumente in der books-Collection, um zu bestätigen, dass alle drei Datensätze importiert wurden.

db.books.countDocuments()

Die Ausgabe sollte 3 sein. Sie können auch ein importiertes Dokument anzeigen, um dessen Struktur zu überprüfen.

db.books.findOne()

Dies zeigt das erste Dokument aus der Collection an. Beenden Sie schließlich die MongoDB Shell, um zu Ihrem Terminal zurückzukehren.

exit

Daten aus einer CSV-Datei importieren

Als Nächstes importieren Sie Daten aus einer CSV-Datei (Comma-Separated Values). CSV ist ein gängiges Format für tabellarische Daten, und mongoimport kann diese leicht in MongoDB-Dokumente umwandeln.

Eine vorbereitete CSV-Beispieldatei namens library_members.csv steht für Sie bereit. Werfen Sie einen Blick auf deren Inhalt.

cat ~/project/library_members.csv

Die Datei enthält eine Kopfzeile und drei Datenzeilen:

name,age,membership_status
John Doe,35,active
Jane Smith,28,active
Mike Johnson,42,expired

Verwenden Sie nun mongoimport, um diese Daten in eine neue Collection namens members in derselben Datenbank library_db zu laden.

mongoimport --db library_db --collection members --type csv --file ~/project/library_members.csv --headerline

Hier sind die neuen Optionen, die für den CSV-Import verwendet werden:

  • --type csv: Gibt an, dass das Format der Eingabedatei CSV ist.
  • --headerline: Weist mongoimport an, die erste Zeile der Datei als Feldnamen für die Dokumente zu verwenden.

Die Ausgabe bestätigt den erfolgreichen Import:

2025-08-27T15:11:33.553+0800    connected to: mongodb://localhost/
2025-08-27T15:11:33.558+0800    3 document(s) imported successfully. 0 document(s) failed to import.

Lassen Sie uns den Import überprüfen. Verbinden Sie sich mit der MongoDB Shell und überprüfen Sie die members-Collection. Sie können die Datenbank direkt beim Starten von mongosh angeben, um einen Schritt zu sparen.

mongosh library_db

Zählen Sie nun die Dokumente in der members-Collection.

db.members.countDocuments()

Das Ergebnis sollte 3 sein. Untersuchen Sie als Nächstes eines der Dokumente, um zu sehen, wie mongoimport die CSV-Zeile in ein BSON-Dokument umgewandelt hat.

db.members.findOne()

Sie sehen ein ähnliches Dokument wie dieses. Beachten Sie, dass alle Werte, einschließlich des Alters (age), standardmäßig als Strings importiert werden.

{
  _id: ObjectId("..."),
  name: 'John Doe',
  age: '35',
  membership_status: 'active'
}

Im nächsten Schritt lernen Sie, wie Sie mit Datentypen umgehen. Beenden Sie vorerst die Shell.

exit

Umgang mit Datentypen beim CSV-Import

Beim Import aus einer CSV-Datei behandelt mongoimport standardmäßig alle Werte als Strings. Dies kann problematisch sein, wenn Sie numerische oder datumsbasierte Operationen durchführen müssen. In diesem Schritt lernen Sie, wie Sie CSV-Daten importieren und dann Datentypen in MongoDB konvertieren.

Lassen Sie uns die Daten aus library_members.csv erneut in eine neue Collection namens typed_members importieren und dann das Feld age in einen Integer konvertieren.

Erstellen Sie zuerst eine CSV-Datei ohne Kopfzeilen, da wir die Feldnamen explizit definieren werden:

tail -n +2 ~/project/library_members.csv > ~/project/library_members_no_header.csv

Importieren Sie nun die Daten mit expliziten Feldnamen:

mongoimport --db library_db --collection typed_members --type csv --file ~/project/library_members_no_header.csv --fields "name,age,membership_status"

Nach dem Import müssen wir das Feld age mithilfe der Update-Operation von MongoDB von String in Integer konvertieren:

mongosh library_db --eval "db.typed_members.updateMany({}, [{ \$set: { age: { \$toInt: \"\$age\" } } }])"

Dieser Befehl verwendet die Aggregationspipeline von MongoDB innerhalb einer Update-Operation, um alle age-Werte mithilfe des $toInt-Operators von Strings in Integer zu konvertieren.

Lassen Sie uns nun das Ergebnis überprüfen, indem wir uns mit mongosh verbinden und die Datentypen in der typed_members-Collection untersuchen.

mongosh library_db

Finden Sie zuerst ein Dokument in der Collection, um die konvertierten Daten anzuzeigen:

db.typed_members.findOne()

Die Ausgabe sollte das Feld age als Zahl anzeigen:

{
  _id: ObjectId("..."),
  name: 'Jane Smith',
  age: 28,
  membership_status: 'active'
}

Sie können den Typ des Feldes age explizit mit dem typeof-Operator von JavaScript innerhalb von mongosh überprüfen:

typeof db.typed_members.findOne().age

Die Ausgabe sollte number sein, was bestätigt, dass die Datentypkonvertierung erfolgreich war. Dies ermöglicht Ihnen, numerische Abfragen durchzuführen, wie z. B. alle Mitglieder zu finden, die älter als 30 sind:

db.typed_members.find({ age: { $gt: 30 } })

Diese Abfrage funktioniert nun wie erwartet und gibt zwei Dokumente zurück. Beenden Sie die Shell, um mit dem nächsten Schritt fortzufahren:

exit

Datenüberprüfung mit Abfragen und Exporten

Der letzte Schritt bei jedem Datenimportprozess ist die gründliche Überprüfung. Dies beinhaltet nicht nur die Überprüfung der Dokumentanzahl, sondern auch das Ausführen von Abfragen, um die Daten stichprobenartig zu prüfen und deren Integrität sicherzustellen. Sie können die Daten auch zur weiteren Analyse in eine externe Datei exportieren.

Verbinden Sie sich zuerst mit Ihrer Datenbank mit mongosh.

mongosh library_db

Sie können alle Collections in der Datenbank auflisten, um die Ergebnisse Ihrer bisherigen Arbeit zu sehen.

show collections

Sie sollten books, members und typed_members sehen. Führen Sie nun einige Abfragen aus, um die Daten zu validieren. Suchen Sie für die books-Collection nach allen Büchern mit dem Tag "python".

db.books.find({ tags: "python" })

Diese Abfrage demonstriert die Suche in einem Array-Feld. Sie sollten zwei Bücher zurückerhalten. Suchen Sie für die typed_members-Collection nach allen Mitgliedern mit dem Mitgliedschaftsstatus "active".

db.typed_members.find({ membership_status: "active" })

Dies sollte zwei Mitglieder zurückgeben. Diese einfachen Abfragen helfen zu bestätigen, dass die Daten wie erwartet strukturiert sind.

Ein weiteres leistungsfähiges Überprüfungswerkzeug ist mongoexport, das das Gegenteil von mongoimport tut. Es exportiert eine Collection in eine Datei. Lassen Sie uns die books-Collection in eine neue JSON-Datei exportieren. Beenden Sie zuerst die Shell.

exit

Führen Sie nun den mongoexport-Befehl von Ihrem Terminal aus.

mongoexport --db library_db --collection books --out ~/project/exported_books.json

Das Flag --out gibt den Pfad für die Ausgabedatei an. Dieser Befehl erstellt eine Datei namens exported_books.json in Ihrem Projektverzeichnis. Sie können deren Inhalt anzeigen, um den Export zu überprüfen.

cat ~/project/exported_books.json

Jede Zeile in der Ausgabedatei ist ein eigenständiges JSON-Dokument aus Ihrer Collection. Diese Datei kann für Backups, Migrationen oder Analysen mit anderen Werkzeugen verwendet werden.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Daten mit dem Dienstprogramm mongoimport sowohl aus JSON- als auch aus CSV-Dateien in MongoDB importieren. Sie haben das Importieren eines JSON-Arrays in eine Collection geübt und das Ergebnis mit mongosh überprüft. Anschließend haben Sie Daten aus einer CSV-Datei importiert, zuerst mit Standard-String-Typen und dann durch Angabe von Datentypen für Felder wie Zahlen. Schließlich haben Sie gelernt, wie Sie die Integrität Ihrer importierten Daten überprüfen, indem Sie Abfragen in mongosh ausführen und eine Collection mit mongoexport zurück in eine Datei exportieren. Dies sind grundlegende Fähigkeiten für die Verwaltung von Daten in jedem MongoDB-Projekt.