我碰到了一个关于MongoDB模式的问题。参考MongoDB Schema Design上关于db.students和db.courses的示例。
由于我更习惯于sql结构化,我仍然对这个引用或嵌入问题感到困惑。因此,示例仅显示了db.students中的课程,并引用了db.courses。所以,如果我要对我的课程进行分类,比如humanitieslanguages,等等,我应该怎么做?
做这件事最好的方法是什么?
1。创建名为“db.categories”的集合并引用db.courses?

// db.courses
{ name: Biology, cat: 1 }
{ name: English, cat: 2 }

// db.categories
{ cat: 1, name: Humanities }
{ cat: 2, name: Languages }

2。只是嵌入课程?
// db.courses
{ name: Biology, cat: Humanities }
{ name: English, cat: Languages }
{ name: History, cat: Humanities }

有人能告诉我,我该怎么做吗?
谢谢您。

最佳答案

简介:
在您的例子中,这两个变量都是好的,因为category只是枚举一个您不需要加载category来显示课程,您只需要创建一些枚举并按id获取category名称。
但在例如中,如果有表db.users,并且每个用户都有db.courses的集合,则不需要创建单独的文档,只需要嵌套的集合课程。这真的很酷,因为在sql中,您需要创建具有一对多引用的单独表。
文档数据库的一大好处是,您可以使用嵌套集合创建大型文档,而无需联接表。
回答:
所以在你的情况下,我建议两种方法:
为类别创建枚举并按ID获取类别名称(但不从Mongo加载)。
只需在课程中复制类别名称(但第一种情况更好,因为如果类别名称更改,则需要用新的类别名称更新每个课程)。

关于mongodb - MongoDB架构设计 - 新的集合或引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4583086/

10-12 00:59