Atualizando um documento incorporado no MongoDB com o driver C # oficial

Se eu tiver uma coleção da empresa que contenha divisões incorporadas:

{ 
  "_id": 1 
  "_t": "Company", 
  "Name": "Test Company" 
  "Divisions": [ 
    { 
       "_id": 1 
       "_t": "Division", 
       "Name": "Test Division 1" 
    }, 
    { 
       "_id": 2 
       "_t": "Division", 
       "Name": "Test Division 2" 
    } 
  ] 
} 

Qual é a melhor maneira de salvar / atualizar uma divisão inteira ao usar odriver oficial de 10gen C #? (A versão mais recente 0.9)

Estou usando o Update.AddToSetWrapped para adicionar divisões, e isso funciona bem, mas eu também gostaria de poder atualizar documentos, dependendo do _id deles.

Por exemplo, se eu definir o seguinte método de atualização:

public void UpdateDivision(IDivision division) 
{ 
  var mongo = MongoServer.Create(_connectionString); 
  var database = mongo.GetDatabase(_databaseName); 
  var query = Query.EQ("_id", division.CompanyId); 
  var update = Update.AddToSetWrapped("Divisions", division); 
  database.GetCollection<Company>("Company") 
          .Update(query, update, UpdateFlags.Upsert, SafeMode.True); 
} 

e chame assim:

var division = GetDivisionById(1); 
division.Name = "New Name"; 
UpdateDivision(division);

Em seguida, uma nova instância de Division será adicionada ao conjunto, porque, embora o "_id" ainda seja 1, o Nome é diferente e, portanto, é um documento exclusivo.

Então, o que há uma boa maneira de atualizar um documento incorporado inteiro?

Até encontrar uma solução melhor, vou primeiro$pull a divisão original e depois$addToSet com a divisão modificada. Isso funciona, mas obviamente não é o ideal, pois realiza duas atualizações separadas.

questionAnswers(1)

yourAnswerToTheQuestion