2014-12-08 8 views
0

최근에 mongodb에서 작업하기 시작했습니다. 내 간단한 응용 프로그램은 지리적 계층 구조를해야합니다mongodb에서 문서의 모든 부모와 자식을 얻는 방법

Continet 같은 -> 국가 -> 지역 ---> 리조트 -> 숙박 시설

위와 같이 내 데이터는이

{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a44"), 
    "name" : "Europe", 
    "parent" : "", 
    "type" : "Continent", 
    "synonym" : "", 
    "code" : "EEE" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a47"), 
    "name" : "Bulgaria", 
    "parent" : "EEE", 
    "type" : "Country", 
    "synonym" : "", 
    "code" : "BGR" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a45"), 
    "name" : "Albania", 
    "parent" : "EEE", 
    "type" : "Country", 
    "synonym" : "", 
    "code" : "ALB" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a48"), 
    "name" : "Bourgas Region", 
    "parent" : "BGR", 
    "type" : "Region", 
    "synonym" : "", 
    "code" : "002682" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a49"), 
    "name" : "Obzor", 
    "parent" : "002682", 
    "type" : "Resort", 
    "synonym" : "", 
    "code" : "002911" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fe7d4d2a4a"), 
    "name" : "Sunny Beach", 
    "parent" : "002682", 
    "type" : "Resort", 
    "synonym" : "", 
    "code" : "002548" 
} 
{ 
    "_id" : ObjectId("54854d5af2ef42fa7d4d2b3d"), 
    "name" : "Hotel Park Avenue", 
    "parent" : "002548", 
    "type" : "Accommodation", 
    "synonym" : "", 
    "code" : "022548" 
} 

처럼 될 것입니다 모든 문서에서 사용할 수있는 직접적인 부모 만있을 것입니다.

지금은 "코드"로 문서에 모든 부모와 자녀를 얻을 수있다 : "002548"나는 리조트 코드가있는 경우

, 내가 얻을 수있는 모든 부모로서 각각의 리조트를 가지고있는 숙박 시설 리조트가 속한 목적지, 컨트리, 대륙을 얻어야합니다.

나는 이것을 얻기 위해 재귀 쿼리가 있어야한다고 느낀다. DB 조작을 위해 MongoTemplate을 사용하고있다.

제발 최선의 해결책을 얻으려면 도와주세요.

미리 감사드립니다.

답변

2

mongodb는 조인을 지원하지 않으므로이 계층 구조를 따라 가려면 여러 쿼리를 수행해야합니다.

+0

이 질문에 대한 대답은 제공되지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –

+0

그가 찾고있는 것은 mongo가 지원하지 않는 조인입니다. 복수의 쿼리를 사용해야합니다. 그것은 * 답입니다. – evanchooly

+0

@evanchooly 여러 개의 쿼리를 사용해야 함을 이해합니다. 논리적으로 여러 쿼리를 사용하는 가장 좋은 방법을 제안 해주십시오. –

0

이 문서에서 어떤 쿼리를 실행하고 있는지 알고 있으면 도움이 될 것입니다. 그러나 관심있는 레벨은 Resort 및 입니다. 더 높은 레벨을 별도의 문서로 구성했지만, 내게는 ResortsAccomodations : Resort이 특정 지역, 국가, 대륙에있는 것으로 보입니다. 또한 지역, 국가 및 대륙은 크게 변하지 않습니다. 단지에서 찾고 위 같은 숙박 시설의 "부모"를 찾는 구조의이 종류와

{ 
    "_id" : ObjectId("54854d5af2ef42fa7d4d2b3d"), 
    "name" : "Hotel Park Avenue", 
    "type" : "Accommodation", 
    "synonym" : "", 
    "code" : "022548", 
    "region" : "New York", 
    "country" : "United States", 
    "continent" : "North America" 
} 

: 나는 더 높은 수준의 지리 정보가 ResortAccommodation 문서에 포함 된 좋은 후보라고 생각합니다 지역, 국가, 대륙 필드 값. 예를 들어 한 국가의 '자녀'를 찾는 것은 간단한 검색어입니다.

db.stuff.find({ "country" : "United States" }) 
+0

관심 수준은 숙박 시설 및 휴양지가 아닙니다. 예를 들어 사용자가 국가 코드로 검색 한 경우 모든 국가의 리조트 및 숙박 시설과 함께 해당 국가의 대륙을 포함하여 모든 것을 표시하고 싶었던 모든 사례가 필요합니다 ... 희망적입니다. –

관련 문제