MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

C# MongoDB - Wie fügt man Elemente zu mehreren verschachtelten Array-Elementen hinzu und entfernt sie?

Sie können etwas wie unten im 2.5-Treiber mit der 3.6-Version versuchen.

Findet das Dokument mit filter Kriterien und update was die neue Positionskennung enthält um mehrere Elemente im Array innerhalb von UpdateOne zu aktualisieren Methode.

$[] aktualisiert alle Tags Arrays, um neue Elemente in alle Categories aufzunehmen Reihe. Es fungiert als Platzhalter zum Aktualisieren aller Elemente im Array.

Drücken Sie

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Ziehen

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Pull("Tags.$[].Categories", "Item 3");
var result = collection.UpdateOne(filter, update);

Zusätzliche Informationen:

Sie können die ArrayFilters setzen Optionen in UpdateOptions zum Anwenden von Abfragekriterien auf verschachtelte Arrays, um zu steuern, welche Elemente aktualisiert werden sollen.

Zum Beispiel, um alle Kategorien im Tags-Array zu aktualisieren, wobei jedes Tag Name hat Name.

var filter = Builders<Product>.Filter.Eq("Id", "123");
var update = Builders<Product>.Update.Push("Tags.$[t].Categories", "Item 3");
var arrayFilters = new List<ArrayFilterDefinition>{ new ArrayFilterDefinition(new BsonDocument("t.Name", "name")) };
var updateOptions = new UpdateOptions({ArrayFilters = arrayFilters});
var result = collection.UpdateOne(filter, update, updateOptions);