MongoDB mit NodeJS: CRUD

MongoDB mit NodeJS: CRUD

Im letzten Beitrag ging es darum wie wir mit NodeJS eine Verbindung zu einer MongoDB Datenbank herstellen. Um die Verbindung zu testen, habe wir abschließend einen Eintrag erstellt. In diesem Artikel möchte ich genau dort ansetzen und die vier fundamentalen Operationen des Datenmanagements vorstellen: Create, Read, Update, Delete – CRUD.

Vorneweg sei gesagt, dass wir hier nicht auf alle Methoden und Möglichkeiten der Operatoren eingehen, sondern lediglich die Basics behandeln. Aus diesem Grund empfehle ich insbesondere die offizielle MongoDB NodeJS Driver API für alle die es genau wissen wollen.

CREATE

Grundsätzlich möchten wir in der Regel entweder ein oder mehre Dokumente und Felder anlegen. Für den ersten Fall bietet uns der MongoClient über die collection, die insertOne Funktion.

  db.collection('users').insertOne({
        name: 'Peter',
        age: 26
    }).then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

An collection wird der Name als String übergeben. InsertOne erwartet als Argument ein JSON Objekt, welches hier im Beispiel aus jeweils zwei Key-Value-Pairs besteht. Darüber hinaus bietet uns die Funktion zwei Möglichkeiten die Antwort zu verarbeiten: Entweder als Callback, sollte keiner übergeben werden, dann wird ein Promise zurückgegeben, mit dem sich das Handling, so wie im Beispiel oben, per then() und catch() umsetzen lässt.

Wie der Name es schon vermuten lässt, bietet uns insertMany die Möglichkeit mehrere Felder anzulegen.

    db.collection('users').insertMany([
        {
            name: 'Daniel',
            age: 29
        }, {
            name: 'Günther',
            age: 50
        }
    ]).then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

Unterscheid zu insertOne ist lediglich, dass nicht nur ein JSON-Objekt als Argument übergeben wird, sondern ein Array aus JSON-Objekten.

READ

Nachdem wir Daten in unsere Datenbank gespeichert haben, möchten wir sie auch abrufen können. Ähnliche wie bei Create Operationen, gibt es auch für Read zwei Möglichkeiten: findOne und find.

    db.collection('users').findOne({
        _id: new ObjectID('5ce0881d3b614fa9dc57835b'),
        age: 32
    }).then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

Beginnend mit fineOne übergeben wir das Filter-Argument und bekommen als Antwort unser gewünschtes Feld.

An dieser Stelle ein kleiner Exkurs zur ObjectID.

IDs werden in MongoDB binärisch gespeichert um Speicherplatz zu sparen. Aus diesem Grund müssen wir die ID erst parsen. Dazu brauchen wie eine Instanz von ObjectID um den String übergeben zu können.

const ObjectID = mongodb.ObjectID

Im Anschluss können wir mit dem Keyword new, wie oben im Beispiel-Code, die Instanz erstellen.

Abschließend noch die find Funktion mit der wir ein Array von JSON-Objekten zurück bekommen, sofern Einträge gefunden worden sind.

   db.collection('users').find({age: 18}).toArray().then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

Wie gewohnt übergeben wir die Filterkriterien als Parameter an find(). Die Besonderheit hier ist, dass find() im Gegensatz zu den anderen Funktionen lediglich einen Cursor darstellt. Das bedeutet, dass wir noch eine Funktion „zwischenschalten“ müssen um uns das Ergebnis als Array zurückgeben zu lassen.

UPDATE

Die Funktion für das Update sind wiederum gleich zu behandeln. Hier wird wie gewohnt das Filter-Kriterium. Übrigens, in den Beispielen haben wir bisher meistens nur ein Kriterium verwendet, aber hier sind auch mehrere denkbar.

  db.collection('users').updateOne({
        name: 'Daniel'
    }, {
        $set: {
            age: 30
        }
    }).then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

Neu an dieser Stelle ist der Field Update Operator $set, erst dieser sorgt dafür, dass das entsprechende Feld überschrieben wird.

Um mehrere Dokumente zu aktualisieren, wird updateMany() auf die gleiche Art und Weise benutzt wie oben updateOne().

DELETE

Um Einträge aus der Datenbank zu entfernen stehen deleteOne und deleteMany zur Verfügung. Beide Funktion sind selbsterklärend und lassen sich genauso wie in Create verwenden.

db.collection('users').deleteMany({
        age: 50
    }).then((result) => {
        console.log(result)
    }).catch((error) => {
        console.log(error)
    })

CRUD

Bringen wir zum Abschluss alle Funktionen zusammen, inklusive MongoDB Connection und aller zughörigen Dependencies.

MongoDB CRUD with NodeJS

Bei Fragen oder Anmerkungen freue ich mich auf Eure Kommentare!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Nächster Beitrag:

Erste Schritte mit MongoDB und NodeJS: Verbindung herstellen

Erste Schritte mit MongoDB und NodeJS: Verbindung herstellen