Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membuat pertanyaan untuk Padanan Elemen Array JSON dalam PostgreSQL?
Pertanyaan padanan elemen tatasusunan JSON dalam PostgreSQL
Jenis data JSON PostgreSQL boleh menjadi rumit apabila menanyakan elemen tertentu dalam tatasusunan bersarang. Pertimbangkan contoh berikut:
<code>{ "objects": [{"src":"foo.png"}, {"src":"bar.png"}], "background":"background.png" }</code>
Untuk menanyakan rekod yang nilai "src"nya sepadan dengan "foo.png" dalam tatasusunan "objek", anda boleh menggunakan cantuman sisi dalam klausa FROM.
PostgreSQL 9.3 dan ke atas
Untuk PostgreSQL 9.3 dan ke atas, gunakan fungsi json_array_elements()
untuk mengembangkan tatasusunan "objek" dan menguji setiap elemen:
<code class="language-sql">SELECT data::text, obj FROM reports r, json_array_elements(r.data#>'{objects}') obj WHERE obj->>'src' = 'foo.png';</code>
PostgreSQL 9.4 dan ke atas
Dalam PostgreSQL 9.4 dan ke atas, anda harus menggunakan fungsi jsonb_array_elements()
dan mencipta indeks GIN yang sepadan pada ungkapan:
<code class="language-sql">CREATE INDEX reports_data_gin_idx ON reports USING gin ((data->'objects') jsonb_path_ops); SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
Ingat bahawa untuk padanan tatasusunan, elemen perlu disertakan dalam kurungan segi empat sama, manakala padanan objek biasa tidak memerlukan kurungan. Untuk butiran lanjut dan penyelesaian, lihat dokumentasi terpaut dan sumber lain yang disediakan dalam soalan.
Atas ialah kandungan terperinci Bagaimana untuk membuat pertanyaan untuk Padanan Elemen Array JSON dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!