2017-01-05 6 views
0

Ich habe die folgenden JSON in meinem Couchbase Eimer "geo" gespeichert.Couchbase Abfrage-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" 
     } 
    } 
    ] 
} 

Um alle "features" mit "properties.TYPE : 8003" ich folgendes probiert.

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

Aber das gibt das ganze json Dokument und nicht nur die "features" mit den properties.TYPE "8003". Weiß jemand, wie man abfragt, um nur die zusammenpassenden Eigenschaften mit "properties.TYPE": "8003" als Ergebnis zu erhalten?

Antwort

2

Der ANY-Ausdruck in der WHERE-Klausel wird verwendet, um nur die Dokumente von Interesse zu filtern. Wenn Sie eine bestimmte Projektliste haben möchten, müssen Sie auch den entsprechenden Ausdruck in die Projektionsliste schreiben. Die Projektion in Ihrer Abfrage fragt nach 'Features' und daher wird das gesamte Array 'Features' zurückgegeben. Sie können folgende Ausdruck auf der Projektionsliste schreiben Sie die Ausgabe, die Sie erhalten möchten:

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 kann

-Prasad

+0

Sie auch UNNEST verwenden. – geraldss