Você pode usar o recurso de modificação de matriz posicional do MongoDB para atualizar uma divisão inteira na matriz de uma só vez da seguinte maneira:
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))
);
As principais coisas que acontecem aqui são:
- O uso do "$" em Update.Set
- Como Update.Set requer um BsonValue como seu segundo argumento, temos que usar um BsonDocumentWrapper para armazenar o valor da divisão (o parâmetro de tipo IDivision para Create define o nominalType na serialização para IDivision, o que resulta na gravação do discriminador "_t") .