PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara saya melakukan kueri menggunakan bidang di dalam tipe data PostgreSQL JSON yang baru?

Postgres 9.2

Saya mengutip Andrew Dunstan di daftar pgsql-hacker:

Pada tahap tertentu mungkin akan ada beberapa fungsi pemrosesan json (sebagai lawan dari produksi json), tetapi tidak pada 9.2.

Tidak mencegahnya memberikan contoh implementasi di PLV8 yang seharusnya menyelesaikan masalah Anda. (Tautan mati sekarang, lihat PLV8 modern sebagai gantinya.)

Postgres 9.3

Menawarkan gudang fungsi dan operator baru untuk menambahkan "pemrosesan json".

  • Panduan tentang fungsionalitas JSON baru.
  • Wiki Postgres tentang fitur baru di hal 9.3.

Jawaban atas pertanyaan awal di Postgres 9.3:

SELECT *
FROM   json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ]'
  ) AS elem
WHERE elem->>'name' = 'Toby';

Contoh lanjutan:

  • Kombinasi kueri dengan array record bersarang dalam tipe data JSON

Untuk tabel yang lebih besar, Anda mungkin ingin menambahkan indeks ekspresi untuk meningkatkan kinerja:

  • Indeks untuk menemukan elemen dalam larik JSON

Postgres 9.4

Menambahkan jsonb (b untuk "biner", nilai disimpan sebagai tipe Postgres asli) dan lebih banyak fungsi untuk keduanya jenis. Selain indeks ekspresi yang disebutkan di atas, jsonb juga mendukung indeks GIN, btree, dan hash, GIN adalah yang paling ampuh.

  • Manual tentang json dan jsonb tipe dan fungsi data.
  • Wiki Postgres di JSONB di hal 9.4

Manual ini sejauh menyarankan:

Secara umum, sebagian besar aplikasi sebaiknya memilih untuk menyimpan data JSON sebagaijsonb , kecuali jika ada kebutuhan yang cukup khusus, seperti asumsi lama tentang pengurutan kunci objek.

Penekanan saya yang berani.

Manfaat kinerja dari peningkatan umum pada indeks GIN.

Postgres 9.5

Lengkapi jsonb fungsi dan operator. Tambahkan lebih banyak fungsi untuk memanipulasi jsonb di tempat dan untuk ditampilkan.

  • Kabar baik utama dalam catatan rilis Postgres 9.5.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menentukan tab di front-end COPY postgres

  2. Cara mengambil cadangan fungsi hanya di Postgres

  3. Memahami Kolom Sistem di PostgreSQL

  4. Bagaimana cara mencari nilai tertentu di semua tabel (PostgreSQL)?

  5. Cara membuat pernyataan yang disiapkan postgres dinamis di PHP