考虑一个典型的博客应用程序,其中博客可以有很多帖子,帖子可以有很多评论。 假设我们想要提供一个RESTfull API来访问它。
如果我使用关系数据库来存储这些数据,我会在posts表中有一个外键到注释表中的帖子的外键。
通过Mongoose使用MongoDB时,我看到了三种不同的方法来设计集合:
有三个集合:一个用于博客,一个用于帖子,一个用于评论。帖子的模式将有一个引用其博客的字段,而评论的模式将有一个引用其帖子的字段。 (非常类似于关系解决方案。)
同样,有三个集合,但每个博客都会有一系列对帖子的引用,每个集合都会发布一系列对评论的引用。
只有一个包含子文档和子子文档的集合,其中博客包含一系列帖子,每个帖子都包含一系列评论。
哪一个是正确的,或者每个人的利弊是什么?
答案 0 :(得分:1)
3收集方法怎么样,但
使用 $ slice 运算符将最后(N)条评论复制到Post集合中,从而保持“最新评论”列表简短
$ inc 邮件中的评论数量因此可以快速检索每个帖子的评论数
从博客中复制或缓存博客信息,或将摘要嵌入到帖子中。
主要观点:制作它以使Post条目包含您想要一次性渲染的所有内容。