Vous pouvez utiliser la fonctionnalité de modification de tableau positionnel de MongoDB pour mettre à jour une division entière dans le tableau à la fois comme suit :
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))
);
Les éléments clés qui se passent ici sont :
- L'utilisation du "$" dans Update.Set
- Étant donné que Update.Set nécessite un BsonValue comme deuxième argument, nous devons utiliser un BsonDocumentWrapper pour contenir la valeur de division (le paramètre de type IDivision sur Create définit le nominalType à la sérialisation sur IDivision, ce qui entraîne l'écriture du discriminateur "_t"). .