U kunt de functie voor het wijzigen van positionele arrays van MongoDB gebruiken om als volgt een hele divisie in de array in één keer bij te werken:
var division = GetDivisionById(1);
division.Name = "New Name";
// change any other properties of division you want
collection.Update(
Query.EQ("Divisions._id", 1),
Update.Set("Divisions.$", BsonDocumentWrapper.Create<IDivision>(division))
);
De belangrijkste dingen die hier gebeuren zijn:
- Het gebruik van de "$" in Update.Set
- Sinds Update.Set een BsonValue als tweede argument vereist, moeten we een BsonDocumentWrapper gebruiken om de delingswaarde vast te houden (de IDivision type parameter to Create stelt het nominalType bij serialisatie in op IDivision, wat resulteert in het schrijven van de "_t" discriminator) .