Можете да използвате функцията за модификация на позиционен масив на MongoDB, за да актуализирате цялото разделение в масива наведнъж, както следва:
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))
);
Ключовите неща, които се случват тук, са:
- Използването на „$“ в Update.Set
- Тъй като Update.Set изисква BsonValue като втори аргумент, ние трябва да използваме BsonDocumentWrapper, за да задържим стойността на разделяне (параметърът за тип IDivision за Create задава nominalType при сериализиране на IDivision, което води до записването на дискриминатора „_t“) .