首頁  >  問答  >  主體

ruby - Mongoid為何不能對embedded_in的文檔進行查詢?

我在這裡主要是想請教Mongoid的設計思路,​​這也是我很煩惱的一個地方。首先有兩個內嵌相關的Model:

class User
  include Mongoid::Document
  embeds_one :homepage
end

class Homepage
  include Mongoid::Document
  embedded_in :user
end

程式碼很簡單,為了闡述方便。在這裡,User與Homepage是典型的一對一關係。如果放在關係型資料庫裡,需要在Homepage裡作一個外鍵映射。 Mongo很靈活,可以把Homepage直接內嵌到User中去。我們很容易對User進行查詢,例如User.all;可是我把相同的語法放到Homepage.all中去,卻不起任何作用。

不要說什麼Mongodb中只能對集合進行操作,User是集合,Homepage不是集合之類的;這裡是Mongoid,不是Mongodb,完全可以實現Homepage的概念。何況,Homepage也有一個id屬性,如果不把它抽象成獨立的集合來看,增加的那個id不就很雞肋嗎?

我糾結於此,不只是因為我可以把embeds_one關係換成has_one。事實上我就是需要這樣的語意。我會為User設計一套接口,例如/users;同樣會針對Homepage設計一套接口,例如/homepages。但是,這樣的話就會失去一個重要的體驗,那就是根據Homepage的內容篩選User;更進一步的,我不能同時根據Homepage和User的內容篩選篩選User(也就是關係型資料庫的join操作)。

希望與各位同僚討論,謝謝大家的支持。

高洛峰高洛峰2709 天前614

全部回覆(0)我來回復

無回覆
  • 取消回覆