Saya menghadapi masalah terkait penggunaan tipe data JSON di PostgreSQL. Saya mencoba untuk mencapai penyimpanan model Java didenormalisasi dalam DB. Model ini menampilkan daftar objek yang kompleks. Jadi, saya memutuskan untuk memodelkan mereka sebagai JSON dalam array PostgreSQL asli.
Ini adalah potongan dari pernyataan pembuatan tabel saya:
CREATE TABLE test.persons
(
id UUID,
firstName TEXT,
lastName TEXT,
communicationData JSON[],
CONSTRAINT pk_person PRIMARY KEY (id)
);
Seperti yang Anda lihat itu adalah orang yang menampilkan daftar objek data komunikasi di JSON. Salah satu objek tersebut mungkin terlihat seperti ini:
{"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"}
Saya dapat dengan mudah menambahkan objek JSON ke array menggunakan PostgreSQL's array_append. Namun, saya gagal menghapus nilai yang diketahui dari array. Pertimbangkan pernyataan SQL ini:
UPDATE test.persons
SET communicationData = array_remove(
communicationData,
'{"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"}'::JSON
)
WHERE id = 'f671eb6a-d603-11e3-bf6f-07ba007d953d';
Ini gagal dengan ERROR: could not identify an equality operator for type json
. Apakah Anda memiliki petunjuk bagaimana saya dapat menghapus nilai yang diketahui dari array JSON? Mungkin juga untuk menghapus dengan posisi dalam array, karena saya tahu bahwa satu juga ...
Versi PostgreSQL adalah 9.3.4.