我必须在MongoDB数据库中建模我的数据。 我的数据是帖子和评论,所以我想到的方法有两个:
1个状态集合,每个状态都嵌入了评论
1个状态集和1个评论集
考虑到,从用户体验方面来看,用户会看到状态列表,他有时会要求查看给定状态的评论。 还要考虑用户可以要求查看给定用户的评论:如果评论嵌入在状态中,则检索这些信息可能会更加昂贵。
您建议采用哪种解决方案?
谢谢!
答案 0 :(得分:0)
这取决于评论数量和请求的实际频率。因为如果你有一些评论,你不应该考虑它。此外,如果您将使用两个集合,查询将更复杂,并且评论集合的大小将比一个集合中的一个选择慢。实际上,非规范化是在MongoDB中存储数据的好方法。
答案 1 :(得分:0)
通过查看我认为的解决方案和相关查询,您必须考虑将要发生的查询类型的频率。有一点是适用的,一种设计无法在不引起某些问题的情况下解决所有问题。例如,如果实时查找与状态相关的评论的人比较多,则查看来自用户的所有评论。我认为将评论嵌入状态会有更好的用户体验。如果你可以拥有这种模式,mongodb允许索引子文档
Status : " I am good",
Comments : [{ Comment : "great" , by : "UserOne" } , [{ Comment : "great" , by : "UserOne" }]
你可以索引评论。所以用户对所有评论的搜索也会很好。在获取状态时,您可以获取注释并从缓存中获取注释以使用户体验更好。