用于不同类型帖子/文章的 Mongodb 模式 [关闭]

Posted

技术标签:

【中文标题】用于不同类型帖子/文章的 Mongodb 模式 [关闭]【英文标题】:Mongodb Schemas for different types of Posts/Articles [closed] 【发布时间】:2017-11-05 05:02:55 【问题描述】:

我正在使用 Mongodb、Mongoose 和 Expressjs 开发一个应用程序,其中有不同类型的文章或帖子。例如,有一个 URL 帖子,它只包含一个 URL 或地址,并且其中没有文本。有普通帖子、地图帖子、图片帖子和其他类型的帖子。

现在我想在我的应用程序中定义Posts 的架构。如果我应该为它们中的每一个定义不同的模式,我有点困惑,因为当它们共享某些属性时它们应该具有不同的属性和属性,或者将所有可能的属性放在 Post 模式中并使用名称为的属性type 指定已分享帖子的类型。

做这种事情的最佳做法是什么?

【问题讨论】:

【参考方案1】:

这取决于您的需求。如果您想对整个Post 集合运行可能导致不同类型帖子的查询,您应该使用一个带有type 属性的通用模式。如果没有,请使用单独的集合,这会使系统清晰易懂。

如果您想使用一个集合并且每个架构中都有共同的属性,您应该尝试mongoose-schema-extend 包。有了它,您可以像处理类一样处理架构并进行继承。

https://github.com/briankircho/mongoose-schema-extend

【讨论】:

【参考方案2】:

我建议将所有常见属性放在一个架构中,并让您的帖子成为动态类型(例如,您的帖子可以包含图像以及文本和视频)。你最终可能会得到这样的结果:

post 
  (_)id : ...,
  user_id: ...,
  .
  .
  .
,
post_images
  (_)id:...,
  post_id:...,
  uri:...,
  .
  .
  .

【讨论】:

以上是关于用于不同类型帖子/文章的 Mongodb 模式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用单独的集合还是嵌入我知道不会用于所有模型的字段。 MongoDB

多用户类型的 MongoDB 模式设计

GraphQL 循环依赖

认识mongodb文档的动态模式

MongoDB - 一个集合中的各种文档类型

Mongodb 关系:帖子和评论(参考 v 子文档)