Sie können die Positions-Array-Modifikationsfunktion von MongoDB verwenden, um eine ganze Abteilung im Array auf einmal wie folgt zu aktualisieren:
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))
);
Die wichtigsten Dinge, die hier passieren, sind:
- Die Verwendung des "$" in Update.Set
- Da Update.Set einen BsonValue als zweites Argument benötigt, müssen wir einen BsonDocumentWrapper verwenden, um den Divisionswert zu halten (der IDivision-Typparameter auf Create setzt den nominalType bei der Serialisierung auf IDivision, was dazu führt, dass der „_t“-Diskriminator geschrieben wird). .