2

我正在开发一个简单的问答论坛。我想使用 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 中看不到任何更新方法:/。

4

2 回答 2

5

对我来说,您需要使用该ReplaceDocumentAsync方法来更新您的文档。

据我所知,您需要替换整个文档;因为当您更改某些内容时,您会更新整个文档而不是其中的一部分。

您可以在此处查看有关该方法的文档

于 2014-11-16T19:26:02.703 回答
2

目前您无法更新部分文档,您必须更新整个文档。更新部分文档是一项经常被请求的功能,您可以投票支持 Microsoft 将来添加它。在 Azure 的 Uservoice 上执行此操作:https ://feedback.azure.com/forums/263030-documentdb/suggestions/6693091-be-able-to-do-partial-updates-on-document


无论如何,您可能应该重新考虑是否要将答案嵌入问题本身。

根据DocumentDB 中的建模数据一文,如果

  • 实体之间存在包含关系。

  • 实体之间存在一对多的关系。

  • 有不经常更改的嵌入式数据。

  • 有嵌入的数据不会无限制地增长。

  • 嵌入的数据是文档中数据不可或缺的一部分。

如果您以粗体查看项目符号点,那么在问题中包含答案可能不是一个好主意,因为您可能有数千个答案,并且问题文档会非常频繁地更改。

相反,您可以拥有

  • 每个答案都定义为一个包含问题参考的文档,因此当有人添加答案时,您只需添加一个答案文档。这是最简单的选择。
  • 或者您可以定义由 100 个答案组成的文档,这样它也不会增长太多。但这需要更多的计划来管理。
于 2016-08-04T17:31:25.443 回答