MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

C# MongoDB - Come aggiungere e rimuovere elementi a più elementi di array nidificati?

Puoi provare qualcosa come di seguito nel driver 2.5 con la versione 3.6.

Trova il documento con filter criteri e update che include il nuovo identificatore di posizione per aggiornare più elementi nell'array all'interno di UpdateOne metodo.

$[] aggiorna tutti i Tags array per includere il nuovo elemento in tutte le Categories Vettore. Agisce come segnaposto per aggiornare tutti gli elementi nell'array.

Premi

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

Tira

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

Informazioni aggiuntive:

Puoi impostare ArrayFilters opzioni in UpdateOptions per applicare criteri di query su array nidificati per controllare quali elementi aggiornare.

Ad esempio per aggiornare tutte le Categorie nell'array Tag in cui ogni tag ha Name nome.

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);