如何在Mongodb中构建ManyToMany关系?

时间:2011-03-16 06:04:37

标签: mongodb many-to-many entity-relationship

  

可能重复:
  MongoDB Many-to-Many Association

我已经使用了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关系的最佳实践。

感谢。

1 个答案:

答案 0 :(得分:3)

以下是关于您可以在多对多关系中使用的策略的演示文稿。

http://www.scribd.com/doc/47326395/MongoBoulder-Schema-Design

本质上是在重复信息(因此额外维护)与查询的简单性之间进行权衡。