gpt4 book ai didi

c# - 评论的MongoDB文档设计(及其回复评论)

转载 作者:可可西里 更新时间:2023-11-01 10:35:45 25 4
gpt4 key购买 nike

我有一个看起来像这样的模型:

class Comment {
public string ID { get; set; }
public string ArticleType { get; set; }
public string ArticleID { get; set; }
public string Body { get; set; }

public DateTime DateCreated { get; set; }

public string UserID { get; set; }
}

我正在创建一个应用程序来存储对我们应用程序中其他内容的评论例如,如果评论是关于产品的,则 ArticleType 可以是“product”,而 ArticleID 将是产品 ID...

我打算用mongodb来存储这些数据

我希望能够回复评论,并分层存储回复我应该在评论文档中存储一个列表吗?

read this Rob Ashton 的文章 这对于像博客文章和评论这样的事情很有意义......

但是,在我的模型中,“回复评论”直接引用父评论。

评论回复甚至可以有回复,使它们达到 x 层级......?这会超出 map reduce 类型查询的范围吗?

编辑:

“文章”可能是错误的术语 - ArticleType 和 ArticleId 只是将评论绑定(bind)到特定“事物”的一种方式 - 例如,如果我们评论这个问题,articleType 可能是 stackOverflowQuestion 而 id 将是 5144273

如果我们评论 ebay 拍卖,我们可以将 articleType 设为 ebay,将 articleId 设为 1234902493984(商品编号)

希望这更有意义......

最佳答案

我看到三种可能的解决方案(这只是我的意见):

1.

public class Comment 
{
...
public List<Comment> ChildComments {get;set;}
}

优点:您可以轻松加载、显示分层数据。您不知道评论中的 parent 评论。
缺点:您不能使用某些 ID 查询和更新评论。

2.

public class Comment 
{
...
public string ParentCommentId {get;set;}
}

优点:您可以根据需要查询/更新。
缺点:当您需要加载层次结构时,对 mongo 的大量请求。

3.我最喜欢的一个;):

 public class Comment 
{
...
public string ParentCommentId {get;set;}
}

public class Article
{
...
public List<Comment> Comments {get;set;}
}

优点:您可以根据需要查询/更新。您可以在一个请求中加载包含所有评论的文章。无需存储冗余的 ArticleType 和 ArticleId
缺点:需要加载文章并在内存中构建层次结构。

希望这能帮助你做出选择..

关于c# - 评论的MongoDB文档设计(及其回复评论),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com