我剛剛開始使用MongoDB和Mongoid for Rails,並需要一些建議,以正確的方式設計一個簡單的博客數據庫。關於簡單的MongoDB數據庫結構的建議
我目前使用下面的結構,但我需要一種方法來查詢給定用戶寫的所有評論(關係數據庫等效將是Comment.where('user_id = ?', user_id)
)。
這是正確的設置,還是應該將註釋移出到自己的文檔中,而不是將它們嵌入到帖子中(就像我在關係數據庫模式中那樣)?
感謝任何建議,謝謝。
數據庫模式
post {
_id: (object id)
title: string
body: string
user_id: reference
comments: [
{ _id: (object id), body: string, user_id: reference },
{ _id: (object id), body: string, user_id: reference },
...
]
}
user {
_id: (object id)
name: string
}
在MongoDB中,我相應的機型有:
class Post
include Mongoid::Document
field :title
field :body
embeds_many :comments
references_one :user
end
class Comment
include Mongoid::Document
field :body
embedded_in :post
references_one :user
end
class User
include Mongoid::Document
field :name
references_many :posts
end
一旦我貼這個,StackOverflow上扔了[此相關的帖子(http://stackoverflow.com/questions/3813975/ mongo-db-design-embedding-vs-relationships),它提供了一個很好的答案。儘管如此,仍然很好地獲得關於更好方法的意見。 – 2011-02-06 08:52:02