首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb -嵌入还是引用?

MongoDb -嵌入还是引用?
EN

Stack Overflow用户
提问于 2014-10-26 19:58:39
回答 1查看 216关注 0票数 1

我来自SQL关系世界,有一个涉及mongodb模式设计的问题。

我需要表示的现实情况包括:用户和月度报告(具有多个每日报告)。

我想知道在mongodb中,是将reports对象嵌入到Users集合中,还是通过id引用两个单独的集合更好。

代码语言:javascript
复制
Embedded solution:
User:{
     name:
     surname:
     monthlyReports: [{
                month: "January 2014"
                dailyReport: [{
                      day: 1
                      singleReport: [
                         { report1}, {report2}, ...
                      ]
                }, {
                     day: 2
                     singleReport: [ 
                         { report1}, {report2}, ...
                     ]
                }
                ]
           },
           {
            /*
               february 2014
               Day 1
               Day 2 ...
             */
           } ...
     ]
}

Referenced solution:
Users:{
     name:
     surname:
     monthlyReports: [
             id_reportMonth1, id_reportMonth2, ...
     ]
}

MonthlyReport: {
       id:
       month:
       dailyReport: [{
                    day: 1
                    singleReport: [
                            { report1 }, { report2 } ...
                    ]
               },
               {
                } ....
       ]
}

对于单个用户,我需要检索单个每日报告,月度报告和总报告。

我认为在嵌入式解决方案中,查询比较简单,但需要很长时间才能创建大对象。

另一种可能是:创建3个引用的集合: User、monthlyReport、dailyReport。

做这件事的更好方法是什么?有人建议过吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-26 20:33:29

Mongo为此写了一篇很棒的3部分博客文章:http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1

底线:这取决于使用情况。

你需要考虑两个因素(参考mongodb博客):

  1. 一对多关系中“N”端的实体是否需要独立?
  2. 关系的基数是什么:是一对多、一对多还是一对多?

基于这些因素,您可以从三种基本的一对多模式设计中选择一种:

  1. 如果基数是一对多,并且不需要访问父对象的上下文之外的嵌入对象,则
  2. 如果基数是一对多,或者如果N侧对象出于任何原因应该独立,则
  3. 使用对N侧对象的引用数组如果基数为one-to-squillions

,则

  • 使用对N侧对象中的单侧的引用

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26572706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档