2010-05-03 85 views
2

我最近開始通過使用MongoMapper gem在MongoDB on Rails上玩耍。我想知道是否有某種方式讓類/對象/集合既是文檔又是嵌入式文檔。我希望同一個實體既能被包含/嵌入到其他文檔中,也能夠作爲一個對象自己存在。帶軌道的MongoDB嵌入式文檔/文檔

這可能嗎?我是否以錯誤的方式處理這個問題?任何討論/建議將不勝感激,因爲網絡上的資源現在看起來對這個東西來說似乎很低。

+0

一般的答案是否定的,但我認爲你可以在錯誤的方式接近問題。你能準確地說出你想要做什麼嗎? – 2010-05-04 03:10:30

+0

當然,所以我有兩個實體:業務和人員。我希望企業將人員作爲嵌入式文檔。但是,我希望人們成爲他們自己的文檔,因爲他們也有相關的實體。 他們都有自己的展示頁面 - 並且是獨立的實體。但爲了提高效率,我希望人們能夠作爲商業嵌入式文檔進行存儲。 我知道這可能需要存在兩個相同實體的「副本」。我打算只寫一個after_save回調來更新關聯的人員引用。 歡迎任何想法。 – Bensign 2010-05-04 03:57:44

+0

可能最容易在每個業務中存儲對People對象的引用數組。 – 2010-05-05 03:29:55

回答

0

我有一個非常類似的用例和孤子是有(使用實體名稱):

  • 與人集合
  • 一個嵌入模型商人說belongs_to_related :person
  • 與企業的集合, embeds_many :busiess_people

這背後的想法是,我在BusinessPerson中有額外的字段,如果人也r從事不同的業務。讓我們說一下這個企業中的角色,一個電子郵件地址或它的份額。

沒有你可能會說獲得業務的人可能看起來很難,但它不是:

class Person 
    def businesses 
    Business.where('business_people._id' => self.id) 
    end 
end