我来自SQL关系世界,有一个涉及mongodb模式设计的问题。
我需要表示的现实情况包括:用户和月度报告(具有多个每日报告)。
我想知道在mongodb中,是将reports对象嵌入到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个引用的集合: User、monthlyReport、dailyReport。
做这件事的更好方法是什么?有人建议过吗?
发布于 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博客):
基于这些因素,您可以从三种基本的一对多模式设计中选择一种:
,则
希望这能有所帮助。
https://stackoverflow.com/questions/26572706
复制相似问题