Node.js - MongoDB Update: Ein umfassender Leitfaden für Anfänger

Hallo那里,未来的程序员们! Heute begeben wir uns auf eine aufregende Reise in die Welt der MongoDB-Updates mit Node.js. Ich erinnere mich, als ich zum ersten Mal dieses Thema unterrichtete, sah ich eine Mischung aus Begeisterung und Verwirrung in den Gesichtern meiner Schüler. Aber keine Sorge, bis zum Ende dieses Tutorials werdet ihr MongoDB-Dokumente wie ein Profi aktualisieren können!

Node.js - MongoDB Update

MongoDB-Updates verstehen

Bevor wir uns den spezifischen Methoden zuwenden, lassen Sie uns einen Moment innehalten, um zu verstehen, was ein Update in MongoDB bedeutet. Stellt euch vor, ihr habt ein digitales Notizbuch (das ist unsere Datenbank), gefüllt mit Seiten voller Informationen (unser Dokumente). Manchmal müsst ihr das, was auf diesen Seiten steht, ändern. Genau das macht ein Update in MongoDB - es ermöglicht uns, bestehende Dokumente in unseren Sammlungen zu modifyzieren.

Die Update-Methoden

MongoDB bietet uns zwei Hauptmethoden zur Aktualisierung von Dokumenten:

Methode Beschreibung
updateOne() Aktualisiert ein einzelnes Dokument, das dem Filter entspricht
updateMany() Aktualisiert mehrere Dokumente, die dem Filter entsprechen

Nun tauchen wir tiefer in jede dieser Methoden ein.

updateOne(): Präzise Updates

Die updateOne()-Methode ist wie ein präziser Chirurg, der nur ein Dokument nach dem anderen modifies. Dies ist perfekt, wenn ihr genau wisst, welches Dokument ihr ändern möchtet.

Syntax

db.collection.updateOne(filter, update, options)

Lassen wir das auseinanderbrechen:

  • filter: Gibt an, welches Dokument aktualisiert werden soll
  • update: Definiert die zu erhebenden Änderungen
  • options: Optionaler Parameter, um die Update-Operation zu steuern

Beispiel 1: Aktualisierung eines einzelnen Feldes

Stellen wir uns vor, wir haben eine Sammlung von Büchern, und wir möchten den Preis von "Der Große Gatsby" aktualisieren. So würden wir das machen:

const { MongoClient } = require('mongodb');

async function updateBookPrice() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

try {
await client.connect();
const database = client.db("bookstore");
const books = database.collection("books");

const filter = { title: "Der Große Gatsby" };
const updateDoc = {
$set: {
price: 15.99
},
};

const result = await books.updateOne(filter, updateDoc);
console.log(`Aktualisiert ${result.modifiedCount} Dokument`);
} finally {
await client.close();
}
}

updateBookPrice();

In diesem Beispiel verwenden wir den $set-Operator, um den Preis zu aktualisieren. Der $set-Operator ersetzt den Wert eines Feldes durch den angegebenen Wert.

Beispiel 2: Hinzufügen eines neuen Feldes

Nun, stellen wir uns vor, wir möchten ein neues Feld "lastUpdated" zu unserem Buchdokument hinzufügen:

const filter = { title: "Der Große Gatsby" };
const updateDoc = {
$set: {
lastUpdated: new Date()
},
};

const result = await books.updateOne(filter, updateDoc);

Dies wird ein neues Feld "lastUpdated" mit dem aktuellen Datum und der Uhrzeit zu unserem Dokument hinzufügen.

updateMany(): Bulk-Updates

Manchmal müssen wir mehrere Dokumente gleichzeitig aktualisieren. Hier kommt updateMany() ins Spiel. Es ist wie ein Lehrer, der alle Prüfungen gleichzeitig bewertet, anstatt einzeln.

Syntax

db.collection.updateMany(filter, update, options)

Die Parameter sind die gleichen wie bei updateOne(), aber diese Methode aktualisiert alle Dokumente, die dem Filter entsprechen.

Beispiel 3: Aktualisierung mehrerer Dokumente

Angenommen, wir möchten einen Rabatt von 10% auf alle Bücher mit einem Preis über 20 USD anwenden:

async function applyDiscount() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

try {
await client.connect();
const database = client.db("bookstore");
const books = database.collection("books");

const filter = { price: { $gt: 20 } };
const updateDoc = {
$mul: {
price: 0.9
},
};

const result = await books.updateMany(filter, updateDoc);
console.log(`Aktualisiert ${result.modifiedCount} Dokumente`);
} finally {
await client.close();
}
}

applyDiscount();

In diesem Beispiel verwenden wir den $mul-Operator, um den Preis zu multiplizieren (10% Rabatt anzuwenden). Der $gt-Operator im Filter wählt alle Dokumente aus, deren Preis über 20 liegt.

Update-Operatoren

MongoDB bietet eine Vielzahl von Update-Operatoren, die uns komplexe Updates ermöglichen. Hier sind einige der am häufigsten verwendeten:

Operator Beschreibung
$set Setzt den Wert eines Feldes
$inc Erhöht den Wert eines Feldes um einen bestimmten Betrag
$mul Multipliziert den Wert eines Feldes mit einem bestimmten Betrag
$rename Benennt ein Feld um
$unset Entfernt ein Feld aus einem Dokument
$min Aktualisiert das Feld, wenn der angegebene Wert kleiner als der aktuelle Feldeingang ist
$max Aktualisiert das Feld, wenn der angegebene Wert größer als der aktuelle Feldeingang ist

Beispiel 4: Verwendung mehrerer Operatoren

Lassen Sie uns mehrere Operatoren in einer einzigen Update-Operation verwenden:

const filter = { title: "Der Große Gatsby" };
const updateDoc = {
$set: { author: "F. Scott Fitzgerald" },
$inc: { copiesSold: 1000 },
$rename: { "publishYear": "yearPublished" }
};

const result = await books.updateOne(filter, updateDoc);

Diese Update-Operation setzt den Autor, erhöht die verkauften Kopien um 1000 und benennt das Feld "publishYear" in "yearPublished" um.

Fazit

Und das war's, Leute! Wir sind durch das Land der MongoDB-Updates gereist, haben die updateOne() und updateMany()-Methoden erkundet und haben auch mit verschiedenen Update-Operatoren experimentiert. Denkt daran, Übung macht den Meister, also fürchtet euch nicht, diese Methoden in euren eigenen Projekten auszuprobieren.

Ich sage meinen Schülern immer, dass das Lernen von Datenbankoperationen wie das Kochen ist - am Anfang mag es kompliziert erscheinen, aber wenn ihr den Dreh raush habt, werdet ihr komplexe Abfragen wie ein Sternekoch eine Gourmetmahlzeit zubereitet!

Weiter codieren, weiter lernen und vor allem, Spaß dabei haben! Bis zum nächsten Mal, fröhliches Updaten!

Credits: Image by storyset