Thủ thuật để jsonb_set()
là nó sửa đổi một phần của jsonb
đối tượng, nhưng nó trả về toàn bộ đối tượng. Vì vậy, bạn chuyển nó giá trị hiện tại của cột và đường dẫn bạn muốn sửa đổi ("trang" ở đây, dưới dạng một mảng chuỗi), sau đó bạn lấy mảng hiện có (my_column->'pages'
) và thêm ||
đối tượng mới của nó. Tất cả các phần khác của jsonb
vật thể vẫn như cũ. Bạn đang chỉ định một cách hiệu quả một đối tượng hoàn toàn mới cho cột nhưng điều đó không liên quan vì UPDATE
vẫn ghi một hàng mới vào bảng vật lý.
UPDATE my_table
SET my_column = jsonb_set(my_column, '{pages}', my_column->'pages' || new_json, true);
create_missing
tùy chọn tham số được đặt thành true
ở đây thêm đối tượng "trang" nếu nó chưa tồn tại.