Tôi đang gặp vấn đề liên quan đến việc sử dụng kiểu dữ liệu JSON trong PostgreSQL. Tôi cố gắng đạt được việc lưu trữ một mô hình Java được chuẩn hóa trong DB. Các mô hình tính năng danh sách các đối tượng phức tạp. Vì vậy, tôi quyết định mô hình hóa chúng dưới dạng JSON trong mảng PostgreSQL gốc.
Đây là đoạn trích trong tuyên bố tạo bảng của tôi:
CREATE TABLE test.persons
(
id UUID,
firstName TEXT,
lastName TEXT,
communicationData JSON[],
CONSTRAINT pk_person PRIMARY KEY (id)
);
Như bạn có thể thấy đó là một người có danh sách các đối tượng dữ liệu truyền thông trong JSON. Một trong những đối tượng như vậy có thể trông như thế này:
{"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"}
Tôi có thể dễ dàng nối thêm một đối tượng JSON như vậy vào một mảng bằng mảng_append của PostgreSQL. Tuy nhiên, tôi thất bại trong việc loại bỏ một giá trị đã biết khỏi mảng. Hãy xem xét câu lệnh SQL này:
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';
Điều này thất bại với ERROR: could not identify an equality operator for type json
. Bạn có gợi ý làm thế nào tôi có thể xóa một giá trị đã biết khỏi mảng JSON không? Cũng có thể xóa theo vị trí trong mảng, vì tôi biết rằng người ta cũng ...
Phiên bản PostgreSQL là 9.3.4.