Update-Operatoren verwenden
In diesem Schritt werden Sie leistungsstarke MongoDB-Update-Operatoren kennenlernen, die es Ihnen ermöglichen, komplexe Dokumentmodifikationen durchzuführen, die über einfache Wertänderungen hinausgehen.
Erstellen wir zunächst einige Beispieldaten, mit denen wir arbeiten können:
db.products.insertMany([
{
name: "Laptop",
price: 1000,
tags: ["electronics", "computer"],
stock: 50
},
{
name: "Smartphone",
price: 800,
tags: ["electronics", "mobile"],
stock: 30
}
])
MongoDB bietet mehrere leistungsstarke Update-Operatoren, die es Ihnen ermöglichen, Dokumente auf raffinierte Weise zu modifizieren:
$mul
-Operator - Multiplizieren von numerischen Werten
db.products.updateOne(
{ name: "Laptop" },
{ $mul: { price: 1.1 } }
)
Die Ausgabe:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
Der $mul
-Operator multipliziert den Wert eines Feldes mit der angegebenen Zahl. In diesem Beispiel erhöhen wir den Preis des Laptops um 10 %.
$push
-Operator - Hinzufügen von Elementen zu einem Array
db.products.updateOne(
{ name: "Smartphone" },
{ $push: { tags: "sale" } }
)
Die Ausgabe:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
Der $push
-Operator fügt ein Element zu einem Array-Feld hinzu. Hier fügen wir ein "sale"-Tag zu den Tags des Smartphones hinzu.
$min
- und $max
-Operatoren - Aktualisierung basierend auf einem Vergleich
db.products.updateOne(
{ name: "Laptop" },
{
$min: { stock: 40 },
$max: { price: 1200 }
}
)
Die Ausgabe:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
$min
aktualisiert das Feld, wenn der angegebene Wert kleiner als der vorhandene Wert ist.
$max
aktualisiert das Feld, wenn der angegebene Wert größer als der vorhandene Wert ist.
Lassen Sie uns unsere Aktualisierungen überprüfen:
db.products.find()
[
{
_id: ObjectId('674683aebec38876f7c1c18e'),
name: 'Laptop',
price: 1200,
tags: [ 'electronics', 'computer' ],
stock: 40
},
{
_id: ObjectId('674683aebec38876f7c1c18f'),
name: 'Smartphone',
price: 800,
tags: [ 'electronics', 'mobile', 'sale' ],
stock: 30
}
]
Sie sollten die modifizierten Dokumente mit aktualisierten Preisen, Tags und Lagerbeständen sehen.