Saya mencari beberapa dokumen dan / atau contoh untuk fungsi JSON baru di PostgreSQL 9.2.
Secara khusus, diberikan serangkaian catatan JSON:
[
{name: "Toby", occupation: "Software Engineer"},
{name: "Zaphod", occupation: "Galactic President"}
]
Bagaimana saya menulis SQL untuk menemukan catatan dengan nama?
Dalam vanilla SQL:
SELECT * from json_data WHERE "name" = "Toby"
Manual dev resmi sangat jarang:
- http://www.postgresql.org/docs/devel/static/datatype-json.html
- http://www.postgresql.org/docs/devel/static/functions-json.html
Perbarui I
Saya telah mengumpulkan inti yang merinci apa yang mungkin saat ini dengan PostgreSQL 9.2 . Menggunakan beberapa fungsi khusus, dimungkinkan untuk melakukan hal-hal seperti:
SELECT id, json_string(data,'name') FROM things
WHERE json_string(data,'name') LIKE 'G%';
Pembaruan II
Saya sekarang telah memindahkan fungsi JSON saya ke proyek mereka sendiri:
PostSQL - satu set fungsi untuk mengubah PostgreSQL dan PL / v8 menjadi toko dokumen JSON yang benar-benar hebat
sql
json
postgresql
postgresql-9.2
postgresql-9.3
Toby Hede
sumber
sumber
Jawaban:
Postgres 9.2
Saya mengutip Andrew Dunstan pada daftar pgsql-hacker :
Tidak mencegahnya dari memberikan contoh implementasi di PLV8 yang seharusnya menyelesaikan masalah Anda.
Postgres 9.3
Menawarkan gudang fungsi dan operator baru untuk menambahkan "pemrosesan json".
Jawaban untuk pertanyaan asli di Postgres 9.3:
Contoh lanjutan:
Untuk tabel yang lebih besar, Anda mungkin ingin menambahkan indeks ekspresi untuk meningkatkan kinerja:
Postgres 9.4
Tambah
jsonb
(b untuk "biner", nilai disimpan sebagai tipe Postgres asli) dan lebih banyak fungsi untuk kedua jenis. Selain indeks ekspresi yang disebutkan di atas,jsonb
juga mendukung GIN, btree dan indeks hash , GIN menjadi yang paling kuat dari semua ini.json
danjsonb
tipe data dan fungsi .Manual ini sejauh menyarankan:
Penekanan berani saya.
Manfaat kinerja dari perbaikan umum hingga indeks GIN.
Postgres 9.5
Lengkap
jsonb
fungsi dan operator. Tambahkan lebih banyak fungsi untuk dimanipulasijsonb
di tempat dan untuk tampilan.sumber
Dengan Postgres 9.3+, cukup gunakan
->
operator. Sebagai contoh,SELECT data->'images'->'thumbnail'->'url' AS thumb FROM instagram;
lihat http://clarkdave.net/2013/06/what-can-you-do-with-postgresql-and-json/ untuk beberapa contoh bagus dan tutorial.
sumber
data
dengan dokumen JSON:{images:{thumbnail:{url:'thumbnail.jpg'}}}
. Beri tahu kami seperti apa data Anda dan permintaan apa yang gagal.SELECT data->'%'->'thumbnail'->'url' AS thumb FROM instagram;
::json
seperti yang dijelaskan dalam posting lain. Juga perhatikan->
operator akan membuat kesalahan jika Anda mencoba mengakses properti yang tidak ada (yaitu jika Anda memiliki JSON terhuyung-huyung):ERROR: column "jsonPropertyYouWant" does not exist
Dengan postgres 9.3 gunakan -> untuk akses objek. 4 contoh
seed.rb
rel c
kembali
Anda dapat terus bersarang
kembali
sumber