我来自SQL关系世界,并且有一个涉及mongodb架构设计的问题。
我需要代表的现实包含: 用户和月度报告(包含多个每日报告)。
我想弄明白,在mongodb中,将嵌入式报表对象更好地嵌入到Users集合中,还是有两个由id引用的单独集合。
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个引用的集合: 用户,monthlyReport,dailyReport。
有什么更好的方法呢? 有人建议吗?
答案 0 :(得分:1)
Mongo撰写了一篇关于它的优秀三部分博文:http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1
底线:这取决于使用情况。
你需要考虑两个因素(参考:mongodb博客文章):
基于这些因素,您可以选择三种基本的一对一架构设计中的一种:
希望这有帮助。