Du kan använda funktionen för positionsarraymodifiering i MongoDB för att uppdatera en hel division i arrayen på en gång enligt följande:
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))
);
De viktigaste sakerna som händer här är:
- Användningen av "$" i Update.Set
- Eftersom Update.Set kräver ett BsonValue som sitt andra argument måste vi använda en BsonDocumentWrapper för att hålla divisionsvärdet (parametern IDivision type till Skapa ställer in nominalType vid serialisering till IDivision vilket resulterar i att "_t"-diskriminatorn skrivs) .