MongoDB架构存储子关系的最佳实践?

Abe*_*ler 3 database-design mongodb

假设我需要在mongoDB数据库中存储经理/员工关系,为了举例,我们可以说这是两个不同的集合.我通常试图通过像这样构造文档/ db来显示这种关系:

经理收藏文件:

{
   id: 1,
   name: "Bill Smith"
}
Run Code Online (Sandbox Code Playgroud)

员工收集文件:

{
  id: 1,
  name: "Abe Smith",
  managerId: 1
},
{
  id: 2,
  name: "Hank Smith",
  managerId: 1
}
Run Code Online (Sandbox Code Playgroud)

但我经常看到人们以这种方式存储这种关系:

方法#2

经理收藏文件:

{
  id: 1,
  name: "Bill Smith",
  employees: [1, 2]
}
Run Code Online (Sandbox Code Playgroud)

员工收集文件:

{
  id: 1,
  name: "Abe Smith"
},
{
  id: 2,
  name: "Hank Smith"
}
Run Code Online (Sandbox Code Playgroud)

我在第二种方法中看到的缺点是,employees如果员工从其集合中删除而不是数组,则阵列可能会失去同步.

我很好奇是否有人可以指出两种不同方法的优点/缺点,如果一般被认为是在MongoDB中存储这样的子关系的最佳实践?

hel*_*lmy 7

MongoDB博客文章发布了MongoDB Schema Design的6个经验法则,对这个主题进行了很好的讨论,并且权衡了许多优点和缺点.

还搜索"mongodb嵌入与链接",你会得到很多参考和意见.