次のように、MongoDBの位置配列変更機能を使用して、配列内の分割全体を一度に更新できます。
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))
);
ここで行われている重要なことは次のとおりです。
- Update.Setでの「$」の使用
- Update.Setでは2番目の引数としてBsonValueが必要なため、分割値を保持するためにBsonDocumentWrapperを使用する必要があります(CreateのIDivisionタイプパラメーターは、シリアル化時にnominalTypeをIDivisionに設定し、「_ t」識別子が書き込まれます) 。