MongoDB:嵌入式文档与多个集合

时间:2013-05-21 07:49:17

标签: mongodb collections embedded-resource

我必须在MongoDB数据库中建模我的数据。 我的数据是帖子和评论,所以我想到的方法有两个:

  1. 1个状态集合,每个状态都嵌入了评论

  2. 1个状态集和1个评论集

  3. 考虑到,从用户体验方面来看,用户会看到状态列表,他有时会要求查看给定状态的评论。 还要考虑用户可以要求查看给定用户的评论:如果评论嵌入在状态中,则检索这些信息可能会更加昂贵。

    您建议采用哪种解决方案?

    谢谢!

2 个答案:

答案 0 :(得分:0)

这取决于评论数量和请求的实际频率。因为如果你有一些评论,你不应该考虑它。此外,如果您将使用两个集合,查询将更复杂,并且评论集合的大小将比一个集合中的一个选择慢。实际上,非规范化是在MongoDB中存储数据的好方法。

答案 1 :(得分:0)

通过查看我认为的解决方案和相关查询,您必须考虑将要发生的查询类型的频率。有一点是适用的,一种设计无法在不引起某些问题的情况下解决所有问题。例如,如果实时查找与状态相关的评论的人比较多,则查看来自用户的所有评论。我认为将评论嵌入状态会有更好的用户体验。如果你可以拥有这种模式,mongodb允许索引子文档

         Status : " I am good",
         Comments : [{ Comment : "great" , by : "UserOne" } , [{ Comment : "great" , by : "UserOne" }]

你可以索引评论。所以用户对所有评论的搜索也会很好。在获取状态时,您可以获取注释并从缓存中获取注释以使用户体验更好。