我有一個對象補丁REST API到部分更新的MongoDB在.NET
{
"_id": "testobject",
"A": "First line",
"B": "Second line",
"C": "Third line"
}
我想發出一個REST PATCH請求我的API只更新這些屬性之一
{
"_id": "testobject",
"C": "Forth line"
}
這被解析成一個類
public class SomeObject {
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
我現在需要更新MongoDB中的現有文檔,但只更新屬性C
。
我可以只爲這一個記錄創建更新定義
UpdateDefinition<SomeObject> update = Builders<SomeObject>.Update.Set(x => x.C, <value of property C>)
或者我可以硬上的每個屬性代碼進行檢查,看它是否是空的
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>));
}
但是,如果我有許多屬性和許多子屬性可能會非常快速地變大。另一個問題是,如果我設置的屬性的值是有意空的話,那就不是在所有因它找外地的非空更新記錄。
我如何做動態部分更新MongoDB的文檔.NET讓我有一個通用的PATCH API調用,可以採取任何文檔具有參數,只有指定的屬性更新?