2011-02-06 7 views
4

MongoDB와 Mongoid for Rails를 시작하고 간단한 블로그 데이터베이스를 디자인하는 올바른 방법에 대한 조언이 필요합니다.간단한 MongoDB 데이터베이스 구조에 대한 조언

현재 아래 구조를 사용하고 있지만 주어진 사용자가 작성한 모든 주석을 쿼리하는 방법이 필요합니다 (관계형 데이터베이스는 Comment.where('user_id = ?', user_id)).

올바르게 설정 되었습니까? 또는 주석을 자체 문서로 옮기고 게시물에 포함시키지 않아야합니까? (관계형 데이터베이스 스키마와 마찬가지로)?

감사합니다.

데이터베이스 스키마 MongoDB의에서

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 
} 

, 내 해당 모델은 다음과 같습니다

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 
+0

이 StackOverflow에가 [이 관련 게시물 (토 http://stackoverflow.com/questions/3813975/ mongo-db-design-embedding-vs-relationships) 좋은 답변을 제공합니다. 그래도 더 나은 접근법에 대한 의견을 얻는 것이 좋습니다. –

답변

3

Mongodb.org에는 모델링 코멘트에 대한 다양한 선택 사항이 있습니다.

체크 아웃 : http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-ModelingComments

+0

감사합니다. 이 페이지의 다음 인용문은이 질문에 완벽하게 답변합니다. "자신의 컬렉션에 주석을 모델링하면 사용자 별 최신 그룹 표시 등 다양한 사이트 전체 집계가 용이 해집니다." –

1

당신이 포함 된 문서에 대해 쿼리 필터를 실행하여 MongoDB에서 점 표기법을 사용할 수 있습니다. 귀하의 경우에는 , 사용자가 모든 코멘트를 검색하기 위해, 당신은 단순히 할 수있는 :이 게시되면

Post.where("comments.user_id" => myUser.id).all