Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Elemen Dalam Tatasusunan JSON dalam PostgreSQL?
Elemen pertanyaan dalam tatasusunan JSON dalam PostgreSQL
Pengenalan
SQL boleh mengendalikan penyimpanan data JSON dengan berkesan. Artikel ini akan menumpukan pada cara membuat pertanyaan tatasusunan yang disimpan dalam objek JSON dalam PostgreSQL.
Pertanyaan JSON tatasusunan bersarang
Andaikan lajur JSON bernama "data" mengandungi tatasusunan objek. Tugasnya adalah untuk mendapatkan semula semua rekod yang sepadan dengan nilai "src" tertentu daripada tatasusunan "objek".
Soalan menggunakan Lateral Join and Unnesting
Postgres menyediakan fungsi json_array_elements() untuk mengembangkan tatasusunan JSON. Dengan menggabungkannya dengan cantuman sisi anda boleh mendapatkan hasil yang diinginkan:
<code class="language-sql">SELECT * FROM reports r, json_array_elements(r.data->'objects') obj WHERE obj->>'src' = 'foo.png';</code>
Pertanyaan ini mencipta cantuman sisi untuk setiap elemen tatasusunan JSON, membenarkan obj lajur mewakili setiap objek dalam tatasusunan.
Alternatif kepada PostgreSQL 9.4
Untuk PostgreSQL 9.4 dan lebih baru, anda boleh memanfaatkan pemprosesan JSON yang dipertingkatkan:
<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
Dalam pertanyaan ini, operator "@>" menyemak sama ada tatasusunan mengandungi objek yang ditentukan. Ingat untuk melampirkan istilah carian dalam kurungan segi empat sama untuk memadankan struktur tatasusunan JSON.
Ringkasan
Untuk menanyakan tatasusunan dalam jenis JSON, anda boleh menggunakan json_array_elements() untuk mengembangkan tatasusunan dan melakukan cantuman sisi. Untuk PostgreSQL 9.4 dan yang lebih baru, anda boleh menggunakan pengendali "@>" yang dipertingkatkan bersama dengan indeks GIN yang sepadan untuk pemadanan yang cekap. Kedua-dua kaedah membolehkan anda mendapatkan semula rekod tertentu berdasarkan nilai elemen tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Elemen Dalam Tatasusunan JSON dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!