Můžete použít funkci úpravy pozičního pole MongoDB k aktualizaci celé divize v poli najednou následovně:
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))
);
Klíčové věci, které se zde dějí, jsou:
- Použití "$" v Update.Set
- Protože Update.Set vyžaduje BsonValue jako svůj druhý argument, musíme použít BsonDocumentWrapper k uložení hodnoty dělení (parametr IDivision type pro Create nastaví nominalType při serializaci na IDivision, což má za následek zapsání diskriminátoru "_t") .