0
我一直在努力這一段時間。這是我的文檔。DocumentDB:如何更新部分屬性值
{
"id": "1",
"Scenario": "Welcome page",
"Translations": [
{
"Language": "En",
"Content": "Welcome!"
},
{
"Language": "Fr",
"Content": "Bienvenue!"
}
],
"LastModified": "2016-05-27T17:27:58.562-06:00",
"ModifiedBy": "admin",
"LastAccessed": "2016-06-13T10:27:58.562-06:00"
}
這裏是我的代碼,以更新屬性(我已經硬編碼在這裏修改的值):
SqlQuerySpec query = new SqlQuerySpec()
{
QueryText = "SELECT c.id, c.Scenario, t.Language, t.Content, c.LastModified, c.ModifiedBy, c.LastAccessed FROM MultiLanguage as c join t in c.Translations where c.id = @Id and t.Language = @Language",
Parameters = new SqlParameterCollection() { new SqlParameter("@Id", Id), new SqlParameter("@Language", Language) }
};
Document doc = client.CreateDocumentQuery<Document>(
collectionLink, query).AsEnumerable().FirstOrDefault();
doc.SetPropertyValue("Content", "Welcome to Stackoverflow!");
Document updated = await client.ReplaceDocumentAsync(doc);
有傳入這個函數的兩個參數。 Id和語言。例如,我只想將屬性內容更新爲0,Id = "1"
和Language="En"
。事情是我的代碼將刪除其他"Language": "Fr"
,"Content": "Bienvenue!"
部分和更新我的文件是這樣的:
{
"id": "1",
"Scenario": "Welcome page",
"Language": "En",
"Content": "Welcome to Stackoverflow!",
"LastModified": "2016-05-27T17:27:58.562-06:00",
"ModifiedBy": "admin",
"LastAccessed": "2016-06-13T10:27:58.562-06:00"
}
但我想是這樣的:
{
"id": "1",
"Scenario": "Welcome page",
"Translations": [
{
"Language": "En",
"Content": "Welcome to Stackoverflow!"
},
{
"Language": "Fr",
"Content": "Bienvenue!"
}
],
"LastModified": "2016-05-27T17:27:58.562-06:00",
"ModifiedBy": "admin",
"LastAccessed": "2016-06-13T10:27:58.562-06:00"
}
所以,我怎麼能只更新部分文件的屬性沒有搞亂其他屬性?
不,這個例子正是我想要的。我想在不影響法國財產的情況下更新英文內容。在我的代碼中,我閱讀了文檔,但無法從客戶端更新英文內容,因爲我不知道如何僅更新行內的英文內容
「doc.SetPropertyValue(」Content「,」Welcome to Stackoverflow!「 );」
在DocumentDB中甚至有可能只更新其中一個子屬性? –
不,請替換或插入整個文檔。 –
是的,經過一番研究,我意識到不可能更新部分屬性。我不好意思替換整個文檔。但我的問題是如何更新兒童財產「內容」之一:「歡迎!」而不會影響另一個「內容」:「Bienvenue!」。我發現更新文檔屬性的唯一方法是使用「SetPropertyValue」。那我的問題:我有兩個內容屬性。有沒有辦法像SetPropertyValue(「內容」,「歡迎來到Stackoverflow!」)。在哪裏(Language =「En」)?謝謝! –