2017-01-05 8 views
0

У меня есть следующий json, сохраненный в моем ковше couchbase "geo".Couchbase query array

{ 
    "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 документ, а не только "features" с properties.TYPE "8003". Кто-нибудь знает, как запросить, чтобы получить только соответствующие функции с результатом "properties.TYPE": "8003"?

ответ

2

ANY выражение в предложении WHERE используется для фильтрации только интересующих документов. Если вам нужен конкретный список проектов, вам также нужно написать соответствующее выражение в списке проекций. Проекция в вашем запросе запрашивает «функции», и, следовательно, возвращается массив «признаков». Вы можете написать следующее выражение в списке проекции, чтобы получить вывод, который вы хотите:

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

 Смежные вопросы

  • Нет связанных вопросов^_^