2017-01-05 3 views
0

다음 json이 내 couchbase 버킷 "geo"에 저장되어 있습니다. Couchbase 쿼리 배열

{ 
    "type": "FeatureCollection", 
    "features": [ 
    { 
     "type": "Feature", 
     "properties": { 
     "ID": "1753242", 
     "TYPE": "8003" 
     } 
    }, 
    { 
     "type": "Feature", 
     "properties": { 
     "ID": "4823034", 
     "TYPE": "7005" 
     } 
    }, 
    { 
     "type": "Feature", 
     "properties": { 
     "ID": "4823034", 
     "TYPE": "8003" 
     } 
    } 
    ] 
} 

내가 다음을 시도 모든 "features" "properties.TYPE : 8003"으로 얻으려면.

SELECT features FROM geo 
WHERE ANY f IN features SATISFIES f.properties.TYPE = "8003" END; 

그러나 이것은 전체 JSON 문서를 반환하지 properties.TYPE "8003"에 바로 "features". 아무도, 결과로 "properties.TYPE": "8003"와 일치하는 기능을 얻으려면 어떻게 쿼리합니까?

답변

2

WHERE 절의 ANY 표현식은 관심있는 문서 만 필터링하는 데 사용됩니다. 특정 프로젝트 목록을 원한다면 프로젝션 목록에도 해당 표현식을 작성해야합니다. 검색어의 투영은 '기능'을 요구하므로 전체 '기능'배열이 반환됩니다.

SELECT ARRAY f FOR f IN features WHEN f.properties.TYPE = "8003" END 
FROM geo 
WHERE ANY f IN features SATISFIES f.properties.TYPE = "8003" END; 
[ 
    { 
    "$1": [ 
     { 
     "properties": { 
      "ID": "1753242", 
      "TYPE": "8003" 
     }, 
     "type": "Feature" 
     }, 
     { 
     "properties": { 
      "ID": "4823034", 
      "TYPE": "8003" 
     }, 
     "type": "Feature" 
     } 
    ] 
    } 
] 

HTH,

-Prasad

+0

또한 UNNEST을 사용할 수 있습니다 : 당신은 당신이 원하는 출력을 얻을 수있는 프로젝션 목록에 다음 식을 작성할 수 있습니다. – geraldss