假设我需要将管理者和员工的关系存储在MongoDB数据库中,举个例子,这两个是不同的集合。通常我会通过以下方式构建文档/数据库来显示这种关系:
管理者集合文档:
{
id: 1,
name: "Bill Smith"
}
员工收集文件:
{
id: 1,
name: "Abe Smith",
managerId: 1
},
{
id: 2,
name: "Hank Smith",
managerId: 1
}
我经常看到人们用以下方式存储这种关系:
方法 #2
管理集合文档:
{
id: 1,
name: "Bill Smith",
employees: [1, 2]
}
员工集合文档:
{
id: 1,
name: "Abe Smith"
},
{
id: 2,
name: "Hank Smith"
}
我看到第二种方法的缺点是如果从集合中删除了一个员工但未从数组中删除,则
employees
数组可能会失去同步。
我很好奇是否有人可以指出这两种不同方法的优缺点,并且是否有一种被认为是在MongoDB中存储此类子关系的最佳实践?