【发布时间】:2015-09-03 15:14:35
【问题描述】:
我们正在编写一个应用程序,其中有多个“项目”。每个“项目”都有多个“板”。每个“董事会”都有自己的一组“评论”。在 MongoDB 中构建它的推荐方法是什么?
= Option I (nested collection)
-Project
|
|----- Board
|
|----- Comments
= Option II (flattened collection)
-Project
|
|----- Board
|
|----- Comment
|-----Board_ID
= Option III (independent collections)
-Project
- Boards
|-----Project_ID
- Comments
|-----Board_ID
有 10,000 个项目。每个项目有 5 个板,所以板总数为 50,000。每个板有 20 个 cmets,因此总 cmets 为 '1,000,000。一次只能在一个项目中打开一个板子。
因此,如果我们选择选项 I,那么要获得特定项目/板组合的关联“评论”,我们将只需要查询/解析 20 个 cmets。但是,如果我选择选项 III,那么,为了获得给定项目/板组合的相关“评论”,我们将不得不查询/解析 1,000,000 cmets。所以,理论上,选项 I 听起来更快更有效。但是,选项 I 使用嵌套集合:嵌套集合有什么缺点吗?是否有任何理由不在 MongoDB 中使用嵌套集合,例如选项 I?
MongoDB 专家:对于这种情况,推荐的做法是什么选项(I、II 或 III)?
【问题讨论】: