在mongo中的关系查询

时间:2011-09-24 10:36:32

标签: ruby-on-rails ruby mongodb mongoid

我的应用程序中有以下模型,我正在使用mongoid

用户,帐户,办公室和潜在客户 用户拥有许多帐户,并且帐户属于用户 帐户有许多办公室,办公室属于帐户 办公室有很多线索,领导属于办公室

现在我想查询,以便我想获得属于用户帐户办公室的线索,例如`

@accounts = Account.where(:user => user)

现在我想获得属于@accounts的办公室的线索。有没有一个体面的方法来实现它?或者我必须遍历每个帐户并获得属于该帐户的办公室,然后最终找到潜在客户。

我可以将帐户信息保留在潜在客户中,以便它们包含帐户和办公室信息,以便我可以一次查询。但这是正确的方法吗?

建议?

1 个答案:

答案 0 :(得分:1)

如果这些是“包含”关系,则考虑嵌入而不是链接。例如,如果所有潜在客户都属于一个办公室,您可以将其嵌入其中:

{office:“...”,lead:[{...},{...}]}

同样,办公室可以嵌入帐户文件中。等等。

然而,上述是否有意义取决于您计划进行的操作(如果完全嵌入了查询,例如“给我所有线索”,如果有更多工作)。此外,最大文档大小为16MB。

可能嵌入和链接的某些组合是合适的。在链接时,你必须像你提到的那样在客户端做。请参阅mongodb.org上的schema design"reaching into objects"页。