Cur*_*tis 6 c# data-modeling mongodb-.net-driver
我正在开发一个MongoDB模型与Facebook类似的项目.所以我们都知道FB如何工作,用户"喜欢"乐队/公司页面,该用户将看到该页面的所有帖子.
下面的模型是如何设计的?如果一个页面有百万喜欢,那么每个帖子将有一百万个子文档的喜欢.这似乎不对,必须有一个我无法想到的更好的方法.
谢谢.
public class Person
{
public ObjectId Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Page
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public List<Like> PersonLikes { get; set; }
}
public class Like
{
public ObjectId Id { get; set; }
public ObjectId UserId { get; set; }
public DateTime DateLiked { get; set; }
}
public class Post
{
public ObjectId Id { get; set; }
public ObjectId PageId { get; set; }
public string Message { get; set; }
public List<Like> PersonLikes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的看法是假设您只想跟踪点赞数
public class Page
{
public ObjectId Id { get; set; }
public DateTimeOffset Date { get; set; }
public string Name { get; set; }
public int NumberOfLikes { get; set; }
}
public class Post
{
public ObjectId Id { get; set; }
public ObjectId PageId { get; set; }
public DateTimeOffset Date { get; set; }
public string Message { get; set; }
public int NumberOfLikes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,我会将反应(喜欢或不喜欢)排队等待插入,“情绪”信息不必实时存储,不是吗?这些不是药物、银行交易等。
public class Like
{
public ObjectId Id { get; set; }
public ObjectId ParentId { get; set;}
public ObjectId UserId { get; set; }
public DateTimeOffset Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
去哪里排队?到喜欢的集合。为什么不是页面或帖子的一部分?因为如果一篇帖子疯传(正如你所说,尽管大多数人不会),你最终可能会获得 1,000,000 个赞。除了分析引擎之外,谁会浏览这些信息?
您还必须确保用户对每个项目只能表达一次他们的反应。
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |