2013-05-23 2 views
1

질문 : 단일 부모 주석 내에서 내 하위 주석을 중첩합니까?MongoDB의 단일 상위 주석 내에서 중첩 된 (하위) 주석

개요 :

  • 만들기 코멘트 시스템

  • 댓글이 가질 수있는 어린이

  • 각 주석의 자녀 또는 부모라는 컬렉션 하나 개의 레코드로 저장됩니다 지금 SubmissionCommentsSchema

  • 하위 주석의 키 => 값은 parent_id =>입니다. Object ID 여기서 Object IDparent_idnull 인 상위 주석을 나타냅니다.

스키마는 다음과 같습니다 부모 주석의

SubmissionCommentsSchema = new Schema({ 
    id : Schema.ObjectId, 
    submission_id : { 
    type: String 
    }, 
    parent_id : { 
    type: String, 
    default: null 
    }, 
    comment : { 
    type: String, 
    required: true 
    }, 
    user_id: { 
    type: String, 
    required: true 
    }, 
    username : { 
    type: String, 
    required: true 
    }, 
    created : { 
    type: Date, 
    default: Date.now 
    }, 
    reply : { 
    type: Boolean, 
    default: false, 
    required: true 
    }, 
    deleted : { 
    type: Boolean, 
    default: false 
    } 
}); 

예 :

{ submission_id: '51899313634afe0000000051', 
    comment: 'Testing one two four', 
    user_id: '516b45f8ac6a1b488e000001', 
    username: 'testing', 
    _id: 519d93a83867470000000146, 
    deleted: false, 
    reply: false, 
    created: Wed May 22 2013 20:57:28 GMT-0700 (PDT), 
    parent_id: '51899338634afe0000000055' }, 
    : 위의 부모의 의견을 참조하는 자식 주석의

    { submission_id: '51899313634afe0000000051', 
        comment: 'asdfadsf', 
        user_id: '516e173f48670b44d20004dc', 
        username: 'bobcobb', 
        _id: 51899338634afe0000000055, 
        deleted: false, 
        reply: false, 
        created: Tue May 07 2013 16:50:16 GMT-0700 (PDT), 
        parent_id: null }, 
    

    예3210

  • 뷰에 이들을 제공 할 때, 나는 그것들을 모두 뒤로 당기고 루프를 통해 어느 쪽이 parent_id s! == null을 가지고 있는지를 알 수 있습니다. 그렇다면 목록에 넣은 다음 부모 주석에 추가 한 다음보기에 해당 주석을 덤프합니다.

원래 부모 주석의 하위 주석을 중첩 배열로 저장해야합니까?

답변

2

아마도 특정 스레드가 많은 응답을받는 경우 문서 크기 제한을 초과 할 수 있습니다.

그러나 정수부 depth 필드를 주석에 추가하여 상위 2 레벨을 쉽게 가져 와서 표시하고 사용자가 주석 트리를 확장 할 때만 다음 레벨을로드 할 수 있습니다.

일부 하위 트리를 신속하게 가져올 수 있도록 특정 조상 ID 배열을 유지해야 할 때가 있습니다. 특정 코멘트에 대한 딥 링크가 표시되면 '위에서'로드해야 볼 수있는 설명을 신속하게 파악할 수 있습니다. 그것을 포함하는 최소 확장 코멘트 트리.

+0

재미 있습니다. 그들이 (단지) 깊은 수준이 되더라도 나는 이것을해야합니까? 학부모> 아동 | 아이 | 아이 | child –

+0

오직 한 레벨 깊어지면 조상 배열이나 깊이가 필요하지 않으며 작은 수만있을 것이라는 것을 보장 할 수 있다면 당신은 앞으로 나아갈 수 있고 확실히 그들을 포함시킬 수 있습니다. –