我已经使用了MySQL / SQLite多年,并且很难解决如何在MongoDB中建立关系,特别是ManyToMany关系,我只是不知道什么是最佳实践。
好的,我有一个company
的项目。 employee
可以适用于多家公司,公司可以拥有多名员工。连接表名为contracts
。
即:
company -< contracts >- employees
字段。
公司:id,name
合约:长度,工资,company_id,employee_id
员工:身份证,姓名
我的实际最终应用程序每个表有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次。
那么,为了减少重复内容的数量,我需要将公司,员工和合同文件分开,是否正确?
如果我将它们分开,我如何进行连接,以及在哪里?
是否存储了MongoDB为公司文档中的每一行/项目生成的真正长的唯一ID?
如果是这样,我该如何取回我的东西?
即:打印一份为合同少于10周的公司工作的所有员工的名单。
正如你所看到的,我仍然对MongoDB有点挣扎,而且我仍在思考SQL类型的方式,但我希望有人可以帮助至少指出正确的方向如何处理,以及MongoDB中ManyToMany关系的最佳实践。
感谢。
答案 0 :(得分:3)
以下是关于您可以在多对多关系中使用的策略的演示文稿。
http://www.scribd.com/doc/47326395/MongoBoulder-Schema-Design
本质上是在重复信息(因此额外维护)与查询的简单性之间进行权衡。