可能重复:MongoDB多对多关联
我已经使用了MySQL / SQLite多年,并且很难解决如何在MongoDB中 Build 关系,尤其是ManyToMany关系,我只是不知道什么是最佳实践 .
好的,我有一个带有 company
的项目 . employee
可以为多家公司服务,公司可以拥有多名员工 . 连接表名为 contracts
.
即: company -< contracts >- employees
领域 . company:id,name contract:length,salary,company_id,employee_id employee:id,name
我的实际最终应用程序每个表有20个字段,但我暂时保持简单 .
当我试图在Mongodb中复制它时,这是我的头开始受伤的地方 .
即;
// Idea 1. Put everything in one hierarchy.
// But, What should I be putting in contracts?
// Where does employees go?
//
// Pseduocode (based from MongoDB online browser shell)
var company = {name:'Company A', contracts:[????]};
问题是,如果员工可以为3家不同的公司工作 . 我将为他工作的每家公司重复员工内容3次 .
那么,为了减少重复内容的数量,我需要将公司,员工和 Contract 文件分开,对吗?
如果我将它们分开,我该如何进行连接,以及在哪里?
是否存储MongoDB为公司文档中的每一行/项生成的真正长的唯一ID?
如果是这样,我该如何取回我的东西?
即:列出 Contract 少于10周的1家公司的所有员工名单 .
正如你所看到的,我仍然对MongoDB有点挣扎,我仍然在考虑SQL类型的方式,但我希望有人可以帮助至少指出正确的方向如何处理,以及MongoDB中ManyToMany关系的最佳实践 .
谢谢 .
1 回答
以下是您可以在多对多关系中使用的策略的演示文稿 .
http://www.scribd.com/doc/47326395/MongoBoulder-Schema-Design
基本上它是重复信息(因此额外维护)与查询简单性之间的权衡 .