json
PostgreSQL 9.3'teki türü test etmeye çalışıyorum .
Bir var json
denilen sütun data
adı verilen bir tabloda reports
. JSON şuna benzer:
{
"objects": [
{"src":"foo.png"},
{"src":"bar.png"}
],
"background":"background.png"
}
'Objeler' dizisindeki 'src' değeriyle eşleşen tüm raporlar için tabloyu sorgulamak istiyorum. Örneğin, eşleşen tüm raporlar için DB'yi sorgulamak mümkün müdür 'src' = 'foo.png'
? Başarıyla eşleşebilecek bir sorgu yazdım "background"
:
SELECT data AS data FROM reports where data->>'background' = 'background.png'
Fakat "objects"
bir dizi değere sahip olduğu için, işe yarayan bir şey yazamıyorum. Eşleşen tüm raporlar için DB'yi sorgulamak mümkün müdür 'src' = 'foo.png'
? Bu kaynaklara baktım ama yine de anlayamıyorum:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- Yeni PostgreSQL JSON veri türü içindeki alanları kullanarak nasıl sorgulama yaparım?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
Ben de bunun gibi şeyleri denedim ama boşuna:
SELECT json_array_elements(data->'objects') AS data from reports
WHERE data->>'src' = 'foo.png';
SQL uzmanı değilim, bu yüzden neyi yanlış yaptığımı bilmiyorum.
jsonb
/ pg 9.4 için bir güncelleme eklendi . Bir kenara: basit durum için (1 seviye yerleştirme),->
operatör aynı zamandajson
sayfa 9.3'teki hile yapar .