MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Aktualisieren eines eingebetteten Dokuments in MongoDB mit dem offiziellen C#-Treiber

Sie können die Positions-Array-Modifikationsfunktion von MongoDB verwenden, um eine ganze Abteilung im Array auf einmal wie folgt zu aktualisieren:

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))
);

Die wichtigsten Dinge, die hier passieren, sind:

  1. Die Verwendung des "$" in Update.Set
  2. Da Update.Set einen BsonValue als zweites Argument benötigt, müssen wir einen BsonDocumentWrapper verwenden, um den Divisionswert zu halten (der IDivision-Typparameter auf Create setzt den nominalType bei der Serialisierung auf IDivision, was dazu führt, dass der „_t“-Diskriminator geschrieben wird). .