MongoDB中的关系(通过猫鼬)

时间:2013-04-10 21:55:17

标签: mongodb database-design mongoose nosql

考虑一个典型的博客应用程序,其中博客可以有很多帖子,帖子可以有很多评论。 假设我们想要提供一个RESTfull API来访问它。

如果我使用关系数据库来存储这些数据,我会在posts表中有一个外键到注释表中的帖子的外键。

通过Mongoose使用MongoDB时,我看到了三种不同的方法来设计集合:

  1. 有三个集合:一个用于博客,一个用于帖子,一个用于评论。帖子的模式将有一个引用其博客的字段,而评论的模式将有一个引用其帖子的字段。 (非常类似于关系解决方案。)

  2. 同样,有三个集合,但每个博客都会有一系列对帖子的引用,每个集合都会发布一系列对评论的引用。

  3. 只有一个包含子文档和子子文档的集合,其中博客包含一系列帖子,每个帖子都包含一系列评论。

  4. 哪一个是正确的,或者每个人的利弊是什么?

1 个答案:

答案 0 :(得分:1)

3收集方法怎么样,但

  1. 使用 $ slice 运算符将最后(N)条评论复制到Post集合中,从而保持“最新评论”列表简短

  2. $ inc 邮件中的评论数量因此可以快速检索每个帖子的评论数

  3. 从博客中复制或缓存博客信息,或将摘要嵌入到帖子中。

  4. 主要观点:制作它以使Post条目包含您想要一次性渲染的所有内容。