MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

C# MongoDB - Comment ajouter et supprimer un élément à plusieurs éléments de tableau imbriqués ?

Vous pouvez essayer quelque chose comme ci-dessous dans le pilote 2.5 avec la version 3.6.

Trouve le document avec filter critères et update qui inclut le nouvel identifiant de position pour mettre à jour plusieurs éléments dans le tableau à l'intérieur de UpdateOne méthode.

$[] met à jour tous les Tags tableaux pour inclure un nouvel élément dans toutes les Categories déployer. Il agit comme un espace réservé pour mettre à jour tous les éléments du tableau.

Poussez

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

Tirez

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

Informations supplémentaires :

Vous pouvez définir les ArrayFilters options dans UpdateOptions pour appliquer des critères de requête sur un tableau imbriqué afin de contrôler les éléments à mettre à jour.

Par exemple, pour mettre à jour toutes les catégories dans le tableau Tags où chaque balise a Name nom.

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