12 CRUD

12.1 Create: Einfügen von Daten

Das Einfügen von Daten in MongoDB wird oft als “Create” innerhalb der CRUD-Operationen (Create, Read, Update, Delete) bezeichnet. Hier erfahren Sie, wie Sie Daten in MongoDB einfügen können.

12.1.1 Einfaches Einfügen

Um ein einzelnes Dokument in eine Sammlung einzufügen, verwenden Sie die insertOne() Methode:

const neuesDokument = {
    name: "ChatGPT",
    typ: "KI"
};

db.meineSammlung.insertOne(neuesDokument);

Nach erfolgreicher Ausführung gibt diese Methode ein Ergebnisobjekt zurück, das Informationen über den Einfügevorgang enthält, einschließlich der _id des eingefügten Dokuments.

12.1.2 Mehrere Dokumente einfügen

Um mehrere Dokumente gleichzeitig in eine Sammlung einzufügen, verwenden Sie die insertMany() Methode:

const dokumente = [
    { name: "ChatGPT", typ: "KI" },
    { name: "OpenAI", typ: "Organisation" },
    { name: "MongoDB", typ: "Datenbank" }
];

db.meineSammlung.insertMany(dokumente);

Wie bei insertOne() gibt diese Methode ein Ergebnisobjekt zurück, das Informationen über den Einfügevorgang enthält, einschließlich der _id-Werte der eingefügten Dokumente.

12.1.3 Automatische _id-Generierung

Wenn Sie beim Einfügen eines Dokuments keinen _id-Wert angeben, generiert MongoDB automatisch einen eindeutigen _id-Wert vom Typ ObjectId. Der _id-Wert ist der primäre Schlüssel für Dokumente in einer Sammlung und garantiert Eindeutigkeit innerhalb dieser Sammlung.

12.1.4 Optionen beim Einfügen

Beide Einfügemethoden (insertOne() und insertMany()) unterstützen optionale Parameter, die das Verhalten des Einfügens beeinflussen können. Zum Beispiel:

12.1.5 Verarbeitung von Duplikaten

Da der _id-Wert in einer Sammlung eindeutig sein muss, wird beim Versuch, ein Dokument mit einer bereits vorhandenen _id einzufügen, ein Fehler ausgelöst. In solchen Fällen müssen Sie sicherstellen, dass Sie entweder eindeutige _id-Werte bereitstellen oder MongoDB die _id-Werte automatisch generieren lassen.

12.1.6 TL;DR

In MongoDB können Sie Daten mit den Methoden insertOne() für einzelne Dokumente und insertMany() für mehrere Dokumente hinzufügen. Während MongoDB automatisch eindeutige _id-Werte generiert, wenn sie nicht bereitgestellt werden, müssen Sie sicherstellen, dass Duplikate vermieden werden, um Einfügefehler zu verhindern. Es stehen auch optionale Parameter zur Verfügung, um das Einfügeverhalten anzupassen.

12.2 Update: Ändern von Daten

Daten in MongoDB zu aktualisieren oder zu ändern, ist ein essenzieller Vorgang, um die Relevanz und Genauigkeit von Daten in der Datenbank sicherzustellen. MongoDB bietet verschiedene Methoden und Operatoren, um das Aktualisieren von Daten zu erleichtern.

12.2.1 Grundlegende Aktualisierung

Die Methode updateOne() findet das erste Dokument, das die angegebenen Kriterien erfüllt, und aktualisiert es:

db.meineSammlung.updateOne(
    { name: "ChatGPT" },
    { $set: { typ: "Sprachmodell" } }
);

12.2.2 Aktualisieren mehrerer Dokumente

Die Methode updateMany() aktualisiert alle Dokumente, die den angegebenen Kriterien entsprechen:

db.meineSammlung.updateMany(
    { typ: "KI" },
    { $set: { status: "aktiv" } }
);

12.2.3 Ersetzen von Dokumenten

Die Methode replaceOne() ersetzt ein Dokument durch ein anderes:

db.meineSammlung.replaceOne(
    { name: "ChatGPT" },
    { name: "ChatGPT", typ: "Neues Modell" }
);

12.2.4 Update-Operatoren

MongoDB stellt verschiedene Operatoren bereit, die bei Update-Vorgängen verwendet werden können:

Beispiel:

db.meineSammlung.updateOne(
    { name: "OpenAI" },
    { $inc: { anzahlModelle: 1 } }
);

12.2.5 Upsert

Ein “Upsert” ist eine Kombination aus “Update” und “Insert”. Wenn das spezifizierte Dokument existiert, wird es aktualisiert. Andernfalls wird ein neues Dokument eingefügt. Dies wird durch die Option { upsert: true } ermöglicht:

db.meineSammlung.updateOne(
    { name: "Neues Modell" },
    { $set: { typ: "KI" } },
    { upsert: true }
);

12.2.6 TL;DR

MongoDB bietet vielfältige Möglichkeiten, Daten zu aktualisieren, von einfachen Updates über das Aktualisieren mehrerer Dokumente bis hin zum Ersetzen ganzer Dokumente. Durch den Einsatz spezieller Update-Operatoren kann das gewünschte Verhalten präzise gesteuert werden. Upserts ermöglichen das Kombinieren von Aktualisierungs- und Einfügevorgängen.

12.3 Delete: Löschen von Daten

Das Löschen von Daten ist in manchen Fällen erforderlich, um die Datenintegrität und -relevanz in einer Datenbank sicherzustellen. MongoDB bietet Methoden, um dieses Ziel effizient und sicher zu erreichen.

12.3.1 Grundlegendes Löschen

Die Methode deleteOne() findet das erste Dokument, das den angegebenen Kriterien entspricht, und löscht es:

db.meineSammlung.deleteOne({ name: "ChatGPT" });

12.3.2 Löschen mehrerer Dokumente

Mit der Methode deleteMany() können Sie alle Dokumente löschen, die den angegebenen Kriterien entsprechen:

db.meineSammlung.deleteMany({ typ: "KI" });

12.3.3 Sicherheitsüberlegungen

Es ist wichtig, beim Löschen von Daten Vorsicht walten zu lassen, da dies nicht rückgängig gemacht werden kann. Es ist empfehlenswert, vor größeren Löschaktionen ein Backup der Datenbank zu erstellen.

12.3.4 TL;DR

MongoDB bietet Methoden zum Löschen einzelner oder mehrerer Dokumente. Es ist entscheidend, beim Löschen von Daten sorgfältig vorzugehen, um unbeabsichtigte Datenverluste zu vermeiden. Ein Backup vor größeren Löschaktionen wird dringend empfohlen.

12.4 Read: Abfragen von Daten

Das Abfragen von Daten ist ein wesentlicher Aspekt von Datenbankoperationen. MongoDB bietet eine Vielzahl von Methoden und Operatoren, um Daten effizient und flexibel abzurufen.

12.4.1 Grundlegende Abfragen

Um alle Dokumente aus einer Sammlung abzurufen, verwenden Sie die Methode find() ohne jegliche Argumente:

db.meineSammlung.find();

Um nach spezifischen Kriterien zu suchen, geben Sie ein Abfrageobjekt an:

db.meineSammlung.find({ typ: "KI" });

12.4.2 Auswahl bestimmter Felder

Mit Hilfe der Projektions-Option können Sie auswählen, welche Felder im Ergebnis angezeigt werden sollen:

// Nur das 'name'-Feld anzeigen
db.meineSammlung.find({}, { name: 1 });

12.4.3 Abfrageoperatoren

MongoDB unterstützt eine Vielzahl von Abfrageoperatoren, um komplexe Kriterien zu definieren:

Beispiel:

// Findet alle Dokumente, bei denen der Wert von 'alter' größer als 20 ist
db.meineSammlung.find({ alter: { $gt: 20 } });

12.4.4 Sortieren, Limitieren und Überspringen

Sie können Ihre Ergebnisse sortieren, die Anzahl der zurückgegebenen Dokumente limitieren und eine bestimmte Anzahl von Ergebnissen überspringen:

db.meineSammlung.find().sort({ name: 1 }).limit(10).skip(5);

12.4.5 Count und Distinct

Um die Anzahl der Dokumente zu zählen, die den Kriterien entsprechen:

db.meineSammlung.find({ typ: "KI" }).count();

Um unterschiedliche Werte für ein bestimmtes Feld abzurufen:

db.meineSammlung.distinct("typ");

12.4.6 Cursor-Methoden

Das find()-Verfahren gibt einen Cursor zurück, mit dem Sie durch die Ergebnisse iterieren können:

const cursor = db.meineSammlung.find();
while (cursor.hasNext()) {
    printjson(cursor.next());
}

12.4.7 TL;DR

MongoDB bietet eine flexible Abfragesprache, die es ermöglicht, Daten basierend auf einer Vielzahl von Kriterien abzurufen. Sie können Felder auswählen, die Ergebnisse sortieren, limitieren und überspringen, sowie komplexe Abfrageoperatoren verwenden, um präzise Abfragen zu definieren. Cursors ermöglichen das Durchlaufen der Ergebnisse und bieten zusätzliche Methoden zur Datenmanipulation.