Saya mencoba menguji json
tipe di PostgreSQL 9.3.
Saya memiliki json
kolom yang disebut data
dalam tabel bernama reports
. JSON terlihat seperti ini:
{
"objects": [
{"src":"foo.png"},
{"src":"bar.png"}
],
"background":"background.png"
}
Saya ingin meminta tabel untuk semua laporan yang cocok dengan nilai 'src' dalam larik 'objek'. Misalnya, apakah mungkin untuk menanyakan DB untuk semua laporan yang cocok 'src' = 'foo.png'
? Saya berhasil menulis kueri yang cocok dengan "background"
:
SELECT data AS data FROM reports where data->>'background' = 'background.png'
Tetapi karena "objects"
memiliki larik nilai, sepertinya saya tidak dapat menulis sesuatu yang berfungsi. Apakah mungkin untuk menanyakan DB untuk semua laporan yang cocok 'src' = 'foo.png'
? Saya telah memeriksa sumber-sumber ini tetapi masih belum bisa mendapatkannya:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- Bagaimana cara membuat kueri menggunakan kolom di dalam tipe data PostgreSQL JSON yang baru?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
Saya juga sudah mencoba hal-hal seperti ini tetapi tidak berhasil:
SELECT json_array_elements(data->'objects') AS data from reports
WHERE data->>'src' = 'foo.png';
Saya bukan ahli SQL, jadi saya tidak tahu apa yang saya lakukan salah.
jsonb
/ hal 9.4. Selain: untuk kasus sederhana (1 level bersarang),->
operator juga melakukan trik untukjson
di halaman 9.3.