MongoDB中的关系(通过Mongoose)

MongoDB中的关系(通过Mongoose),mongodb,database-design,mongoose,nosql,Mongodb,Database Design,Mongoose,Nosql,考虑一个典型的博客应用程序,其中一个博客可以有许多帖子,而一篇帖子可以有许多评论。 假设我们想要提供一个RESTfull API来访问它 如果我使用关系数据库来存储这些数据,我会在posts表中有一个blog的外键,在comments表中有一个post的外键 通过Mongoose使用MongoDB时,我看到了三种不同的设计集合的方法: 有三个集合:一个用于博客,一个用于帖子,一个用于评论。帖子模式将有一个字段引用其博客,评论模式将有一个字段引用其帖子。(与关系解决方案非常相似。) 同样,有三个集

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

如果我使用关系数据库来存储这些数据,我会在posts表中有一个blog的外键,在comments表中有一个post的外键

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

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

  • 同样,有三个集合,但每个博客都有一系列对帖子的引用,每个帖子都有一系列对评论的引用

  • 只有一个包含子文档和子文档的集合,其中博客包含一个帖子数组,每个帖子包含一个评论数组


  • 哪一个是正确的,或者,每一个的优点和缺点是什么?

    3收集方法如何,但是

  • 使用$slice操作符将最后(N)条注释复制到Post集合中,从而缩短“最新注释”列表

  • $inc文章中的评论计数,从而允许快速检索每篇文章的评论计数

  • 复制或缓存日志中的日志信息,或将摘要嵌入到日志中

  • 主要带回家:使其在一次拍摄中包含所有要渲染的后期条目。

    开始并开始。老实说,没有正确的答案。在数据库之外缓存页面、帖子和评论是一个非常明智的选择,有助于缓解一些可能的问题。