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中存储这样的子关系的最佳实践?
MongoDB博客文章发布了MongoDB Schema Design的6个经验法则,对这个主题进行了很好的讨论,并且权衡了许多优点和缺点.
还搜索"mongodb嵌入与链接",你会得到很多参考和意见.