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

Le pilote Mongo C # met à jour un élément spécifique dans un tableau imbriqué

Vous avez besoin de $ opérateur positionnel où vous pouvez spécifier une condition au niveau du document et une condition au niveau du tableau pour rechercher un seul élément imbriqué dans un tableau d'un document particulier. En C# $ le signe est représenté par -1 passé comme index de votre tableau de modèle. Essayez :

var col = mydb.GetCollection<Document>("collectionName");
var id = new ObjectId("5babaaf5509f6d342da5abaa");
var elementName = "Car";
var newValue = 2;

var filterBuilder = Builders<Document>.Filter;
var filter = filterBuilder.Eq(x => x.Id, id) &
    filterBuilder.ElemMatch(doc => doc.Elements, el => el.Name == elementName);

var updateBuilder = Builders<Document>.Update;
var update = updateBuilder.Set(doc => doc.Elements[-1].Value, newValue);

Col.UpdateOne(filter, update);