首页 > 解决方案 > Mongo:很多集合还是只有一个包含不同类型文档的大型集合?

问题描述

我正在设计一个新系统,允许用户创建他们想要的任何内容类型。我希望有很多内容类型(数千种)。我们将使用 mongoDB。哪种方法更好?

选项 1:大量集合,每种内容类型一个,每个集合中有一些文档。

选项 2:单个大型集合,存储不同类型的文档。(我将根据另一个集合控制每个文档具有哪些字段,该集合包含每种内容类型的定义)

我更倾向于第二种选择,为了使分片实现更简单,更有效,我走在正确的道路上吗?我应该考虑哪些额外的考虑因素?

标签: databasemongodbdatabase-design

解决方案


数据建模概念

选项 1:大量集合,每种内容类型一个,每个集合中有一些文档。

除非您需要合并来自两个集合的文档,否则此选项有效。这意味着存储在不同集合中的文档是独立的。

选项 2:单个大型集合,存储不同类型的文档。(我将根据另一个集合控制每个文档具有哪些字段,该集合包含每种内容类型的定义)

这是可能的,但这不是推荐的解决方案。因为使用这种方法管理数据非常复杂。您总是需要有一个过滤条件来过滤文档类型。此外,如果您的收藏变得更大,您将不必要地查询其他文档。


推荐阅读