很酷,歡迎來到MongoDB!這很難得到正確的結果,取決於你的應用程序,但我會嘗試給你一些基於你寫的和我認爲最好的指針。
這並非總是如此,但一般理論是,如果一個對象總是在另一個對象的上下文中被操縱和查看,那麼應該將其嵌入到該對象中。這可能是在您的應用程序中發表評論和帖子的情況。因此,您可能希望在帖子中嵌入評論。
但是,因爲您在多種環境中使用的標記物我會讓自己收藏的是這樣的:
class Tag
include Mongoid::Document
field :tag, type: String
field :type, type: String
field :count, type: Integer
end
讓我們運行下來您的要求和構建模型。
標籤應該有名稱,類型以及使用次數。
通過上述代碼完成Tag類的完成。
用戶,帖子和評論應該能夠有多個標籤。
好吧,讓我們給每個這些類一個「標籤」字段,它有一個標籤ID數組,這將是一個參考關係。
class User
include Mongoid::Document
field :first_name, type: String
field :last_name, type: String
field :email, type: String
field :tags, type: Array
end
此外,我們將在帖子內嵌入註釋,同時擁有像我們爲用戶所做的標籤ID數組。
class Post
include Mongoid::Document
field :subject, type: String
field :body, type: String
field :tags, type: Array
embeds_many :comments
end
class Comment
include Mongoid::Document
field :name, type: String
field :type, type: String
field :count, type: Integer
embedded_in :post
end
有意義嗎?目前有一些建模Rails的關係,這些種種,但使用mongomapper代替mongoid(所以不要注重語法,但要注意提出的想法)在你的答案
很好的細節,詳細信息here +1 – Xorlev
謝謝!希望蒂姆能從中獲得一些東西。 –
非常感謝您提供詳細的解答!這正是我想要的。感覺這可能需要一些時間來解決「蒙戈的思維方式」。我發現自己一直在想它......再次感謝你,這對我有很大幫助! –