Możesz użyć funkcji modyfikacji tablicy pozycyjnej MongoDB, aby zaktualizować cały podział w tablicy na raz w następujący sposób:
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))
);
Kluczowe rzeczy, które się tutaj dzieją, to:
- Użycie „$” w Update.Set
- Ponieważ Update.Set wymaga BsonValue jako drugiego argumentu, musimy użyć BsonDocumentWrapper do przechowywania wartości podziału (parametr typu IDivision do Create ustawia nominalType podczas serializacji na IDivision, co powoduje zapisanie dyskryminatora „_t”) .