Ich habe ein ObjektPatch-REST-API Teil-Aktualisierung MongoDB in .NET
{
"_id": "testobject",
"A": "First line",
"B": "Second line",
"C": "Third line"
}
Ich möchte nur eine dieser Eigenschaften aktualisieren, um eine REST-PATCH Anfrage an meine API senden
{
"_id": "testobject",
"C": "Forth line"
}
Diese wird in eine Klasse analysiert
public class SomeObject {
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
ich jetzt das vorhandene Dokument in MongoDB zu aktualisieren, sondern nur die Aktualisierung der Eigenschaft benötigen C
.
I
für diesen einen Datensatz nur ein Update-Definition erstellen könnteUpdateDefinition<SomeObject> update = Builders<SomeObject>.Update.Set(x => x.C, <value of property C>)
Oder ich könnte schwer, einen Scheck auf jede Eigenschaft kodieren, um zu sehen, ob es
IList<UpdateDefinition<SomeObject>> updates = new List<UpdateDefinition<SomeObject>>();
if (!string.IsNullOrEmpty(C)) {
updates.Add(UpdateDefinition<SomeObject> update = Builders<SomeObject>.Update.Set(x => x.C, <value of property C>));
}
if (!string.IsNullOrEmpty(C)) {
updates.Add(UpdateDefinition<SomeObject> update = Builders<SomeObject>.Update.Set(x => x.C, <value of property C>));
}
jedoch leer ist, wenn ich Viele Eigenschaften und viele Untereigenschaften können sehr schnell sehr groß werden. Das andere Problem ist, dass wenn ich den Wert der Eigenschaft absichtlich leer festlegen würde, würde es den Datensatz überhaupt nicht aktualisieren, weil er nach dem Feld sucht, das nicht leer ist.
Wie kann ich dynamisch partielle Updates für MongoDB-Dokumente in .NET durchführen, so dass ich einen generischen PATCH-API-Aufruf habe, der beliebige der Parameter des Dokuments annehmen und nur die angegebenen Eigenschaften aktualisieren kann?