Starten von Mongo 4.2
, db.collection.update()
kann eine Aggregationspipeline akzeptieren und schließlich die Aktualisierung eines Felds auf der Grundlage seines aktuellen Werts ermöglichen:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
Der erste Teil
{}
ist die Übereinstimmungsabfrage, die filtert, welche Dokumente aktualisiert werden sollen (in diesem Fall alle Dokumente). -
Der zweite Teil
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
ist die Update-Aggregationspipeline (beachten Sie die eckigen Klammern, die die Verwendung einer Aggregationspipeline anzeigen).$set
(Alias von$addFields
) ist ein neuer Aggregationsoperator, der in diesem Fall den Wert des Felds ersetzt (durch Verketten vona
selbst mit dem Suffix"World"
). Beachten Sie, wiea
wird direkt basierend auf seinem eigenen Wert modifiziert ($a
). -
Vergessen Sie nicht
{ multi: true }
, andernfalls wird nur das erste übereinstimmende Dokument aktualisiert.