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 vonaselbst mit dem Suffix"World"). Beachten Sie, wieawird direkt basierend auf seinem eigenen Wert modifiziert ($a). -
Vergessen Sie nicht
{ multi: true }, andernfalls wird nur das erste übereinstimmende Dokument aktualisiert.