Puoi utilizzare la funzione di modifica dell'array posizionale di MongoDB per aggiornare un'intera divisione nell'array in una volta come segue:
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))
);
Le cose chiave che accadono qui sono:
- L'uso di "$" in Update.Set
- Poiché Update.Set richiede un BsonValue come secondo argomento, dobbiamo utilizzare un BsonDocumentWrapper per contenere il valore di divisione (il parametro di tipo IDivision su Create imposta nominalType alla serializzazione su IDivision che comporta la scrittura del discriminatore "_t") .