2014-03-31 2 views
1

mongodb에 중첩 된 카테고리가 있습니다. cat_id_1가 최상위 범주가각 하위 카테고리의 모든 게시물을 가져 오는 가장 좋은 방법

{ 
    "id": "cat_id_3", 
    "name": "category name", 
    "parents": [cat_id_1, cat_id_2] 
} 

cat_id_2 다음 수준 등

뿐만 아니라 게시물의 컬렉션이 있습니다 : 각 카테고리의 문서는 다음과 같이 보인다. 게시물은 모든 카테고리의 카테고리에 속할 수 있습니다. 지금은 게시물 문서에이 특정 게시물이 속한 카테고리 ID 만 저장합니다.

이 문제는 cat_id_1 아래에 게시 된 모든 게시물을 가져와야하며이 하위 범주 인이 예에서는 cat_id_2cat_id_3 인 모든 게시물을 가져와야합니다. 또는 cat_id_2 아래에 있으며 하위 카테고리가 모두 cat_id_3입니다.

몇 가지 옵션을 고려 중이며 숙련 된 조언이 필요합니다.

1) 범주의 ID를 포함하는 parents 배열을 가진 모든 범주 ID를 가져온 다음 id 필드가 반환 된 ID 배열에있는 모든 게시물을 가져올 수 있습니다.

2) 게시물 모음 내에 모든 상위 카테고리 ID가 포함되도록 구조를 변경할 수 있습니다. 그러면 추가 쿼리가 필요 없지만 나중에 카테고리 구조를 변경 (예 : 카테고리 추가/삭제)하기가 어려울 수 있습니다.

그럼이 경우 가장 좋은 방법은 무엇입니까?

+0

설명하는 방식에 따라 순환 의존성이있을 수 있습니다. – Pio

답변

1

일반적인 대답은 없습니다. 나는 당신이 가장 차분한 접근법을 발견했다고 생각한다. 당신이

  • 이 범주에서 게시물의 수는있을 것입니다 어떤 종류의 재 주문을 많이 기대 여부

    • (예 : 당신은 여러 가지 요인에 따라 달라을 위해 그 일을 더 잘

      카테고리가 이동 할 때 범주의 작은 재 배열, deno으로 매우 읽기 무거운 환경에서

    을 얼마나 많은 읽기) 수리가

  • 이 얼마나 많은 문서 화합은 확실히 의미가 있습니다.

    카테고리 당 많은 수의 글이 있으면 매우 자주 바뀌고 읽기가 거의 없으므로 두 가지 검색어 전략이 더 적합 해 보입니다.

    일반적으로 실제 응용 프로그램은 스펙트럼 측면에서 그리 멀지 않으므로 먼저 구현하기 쉬운 (2 쿼리 전략) 것이 필요하면 나중에 수정해야합니다.

  • 관련 문제