MongoDB中MySQL表的正确实现?
我是mongoDB新手,我想知道如何在mongoDB中转换表关系 例如,在我的MySQL数据库中,我有两个表:Manager和EmployeeMongoDB中MySQL表的正确实现?,mysql,mongodb,Mysql,Mongodb,我是mongoDB新手,我想知道如何在mongoDB中转换表关系 例如,在我的MySQL数据库中,我有两个表:Manager和Employee Manager { name: String, ID: Int Primary Key } Employee { name: String, ID: Int Primary Key, Manager: int Foreign key (Manager.ID) } 我想知道用MongoDB实现这一点的正确方法是什么。因为MongoD
Manager {
name: String,
ID: Int Primary Key
}
Employee {
name: String,
ID: Int Primary Key,
Manager: int Foreign key (Manager.ID)
}
我想知道用MongoDB实现这一点的正确方法是什么。因为MongoDB是一个NoSQL数据库,用于无模式和无关系的集合(尽管可以对集合进行验证),所以无连接模式和嵌套对象在这里更有意义 现在根据我们的要求,每个经理对象都链接到其员工,因此,理想情况下,应该有一个包含其所有员工对象的数组,但是,当我们需要所有员工而不考虑经理时,这是不实际的 因此,我们可能希望只保留employee id数组,而不是单独维护employee对象数组和employee集合(表),以获取employee对象 上述架构的示例文档如下所示:
//employee collection document
{
"ID": "E12334",
"name": "John Doe"
}
//manager collection document
{
"ID": "M453",
"name": "Jane Doe",
"employeeIDs": ["E12334", "E12343"]
}
MongoDB是一个应用程序
“文档”是集合中的一个记录,每个文档可以有任意数量的字段,包括数组、映射等。其优点和缺点是同一集合中的两个文档可能包含完全不同的字段。关系数据库的正常形式不适用。此外,每个文档都有一个唯一的id
如何将文档/集合链接在一起完全取决于应用程序逻辑。
很少有选择:
//
{
name: "Jon Appleseed",
manager: "Jonh Bosch"
},
{
name:"Another employee",
manager: "Jonh Bosch"
}
// Employees
{
_id: "_234234",
name: "Jon Appleseed",
manager:{
name:"John Bosh",
id: _12321
}
},
{
_id: "_233234",
name: "Another employee",
manager:{
name:"John Bosh",
id: "_12321"
}
}
// Managers
{
_id: _123213,
name:"John Bosh",
subordinates:
[
{name:"Jon Appleseed", id: "_234234" },
{name:"Another employee", id: "_12321" },
]
}
如您所见,您以牺牲规范化为代价获得了更大的灵活性 MongoDB是一个非关系数据库。您为什么希望在那里建立关系?您计划如何查询您的数据?数据建模(在MongoDB中)基于将使用这两个实体实现的查询。你可以用[猫鼬]来做这个。在mongoose中,您可以引用和填充数据。此外,还可以使用虚拟填充进行反向填充。