簡體   English   中英

Azure DocumentDB - 將對象插入文檔數組?

[英]Azure DocumentDB - Insert object to document array?

我正在開發一個簡單的問答論壇。 我想使用Azure DocumentDB。

如何在DocumentDB中添加現有問題文檔的答案?

就我而言,我列出了與問題類型相同的答案:

public List<Announcement>  { get; set; }

我的文檔對象如下所示:

public class Announcement
{
    [JsonProperty(PropertyName = "id")]
    public string ID { get; set; }

    [JsonProperty(PropertyName = "userid")]
    public int UserID { get; set; }

    [JsonProperty(PropertyName = "username")]
    public string UserName { get; set; }

    [JsonProperty(PropertyName = "useripaddress")]
    public string UserIPAddress { get; set; }

    [JsonProperty(PropertyName = "body")]
    public string Body { get; set; }

    [JsonProperty(PropertyName = "tags")]
    public List<string> Tags { get; set; }

    [JsonProperty(PropertyName = "datecreate")]
    public DateTime DateCreate { get; set; }

    [JsonProperty(PropertyName = "isedited")]
    public bool IsEdited { get; set; }

    [JsonProperty(PropertyName = "dateedit")]
    public DateTime DateEdit { get; set; }

    [JsonProperty(PropertyName = "imageaddonid")]
    public string ImageAddonId { get; set; }

    [JsonProperty(PropertyName = "imageaddonsource")]
    public string ImageAddonSource { get; set; }

    [JsonProperty(PropertyName = "answers")]
    public List<Announcement>  { get; set; }

}

我在DocumentClient中看不到任何更新方法:/。

對我來說,您需要使用ReplaceDocumentAsync方法來更新您的文檔。

據我所知,你需要更換整個文件; 因為當您更改某些內容時,您將更新整個文檔而不是其中的一部分。

您可以在此處查看有關該方法的文檔

目前您無法更新文檔的一部分,您必須更新整個文檔。 更新文檔的一部分是一項經常需要的功能,您可以投票支持Microsoft將來添加它。 在Azure的Uservoice上執行此操作: https ://feedback.azure.com/forums/263030-documentdb/suggestions/6693091-be-able-to-do-partial-updates-on-document


無論如何,您可能應該重新考慮是否要將答案嵌入問題本身。

根據DocumentDB中的數據建模 ,您應該嵌入if

  • 實體之間包含關系。

  • 實體之間存在一對一的關系。

  • 嵌入式數據很少更改。

  • 嵌入式數據將無限增長。

  • 嵌入的數據是文檔中不可或缺的數據。

如果你看一下粗體的子彈點,看起來問題里面的答案可能不是一個好主意,因為你可能有數千個答案,問題文檔會經常變化。

相反,你可以擁有

  • 每個答案都定義為一個帶有問題參考的文檔 ,因此您只需在有人添加答案時添加答案文檔。 這是最簡單的選擇。
  • 或者您可以定義由100個答案組成的文檔 ,例如它也不會增長太多。 但那需要更多的計划來管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM