2011-09-24 202 views
0

我在我的應用程序下面的模型,我使用mongoid關係查詢

用戶,客戶,辦公室和信息 用戶有多個帳戶和帳戶所屬的用戶 的帳戶有很多辦事處和一個辦公室屬於一個帳戶 一個辦公室有很多線索,一個線索屬於一個辦公室

現在我想要查詢這樣我想獲得屬於用戶帳戶的辦公室,如'

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

現在我想要獲得屬於@accounts的辦公室的線索。有沒有一種體面的方式來完成它?或者我必須遍歷每個賬戶並獲得屬於該賬戶的辦公室,然後最終找到潛在客戶。

我能堅持引線本身的賬戶信息,以便他們同時包含帳戶和辦公室的信息,這樣我可以一次性查詢。但是,這是正確的方式?

對此提出建議?

回答

1

如果這些都是「包含」關係,考慮嵌入,而不是鏈接。例如,如果所有的線索都屬於一個辦公室,你可以在其中嵌入他們:

{辦公室: 「...」,引出:[{...},{...}]}

同樣,辦公室可以嵌入賬戶文件。等等。

但是上面是否有意義取決於你打算做(如果完全嵌入查詢,如「給我所有的線索:」如果更多的工作)的操作。還有一個16MB的最大文件大小。

可能的嵌入和鏈接的組合是適當的。當你連接你必須做你的客戶端,你所提到的。請參閱mongodb.org上的schema design"reaching into objects"頁面。