我遇到了一个关于MongoDB架构的问题。参考 MongoDB Schema Design 上的示例,关于db.students和db.courses。
由于我更习惯于SQL结构化,我仍然对此引用或嵌入问题感到困惑。因此,该示例仅显示db.students
中的课程,并引用db.courses
。因此,如果我要对humanities
,languages
等课程进行分类,我应该怎么做?
什么是更好的方法呢?
// db.courses
{ name: Biology, cat: 1 }
{ name: English, cat: 2 }
// db.categories
{ cat: 1, name: Humanities }
{ cat: 2, name: Languages }
// db.courses
{ name: Biology, cat: Humanities }
{ name: English, cat: Languages }
{ name: History, cat: Humanities }
有人可以请您提出建议,我应该做什么?
谢谢。
答案 0 :(得分:3)
<强>简介强>
在你的情况下,两种变体都会很好,因为类别只是枚举你不需要加载类别才能显示课程,你只需要创建一些枚举并按id获取类别名称。
但是在例如,如果你有表db.users并且每个用户都有db.courses的集合,你不需要创建单独的文档,你只需要嵌套的集合课程。它真的很酷,因为在sql中你需要创建一个具有一对多引用的单独表。
文档数据库的一大好处是,您可以使用嵌套集合创建大型文档,而无需连接表。
<强>答案:强>
所以在你的情况下,我建议两种方式: