Postgres 9.2
Tôi trích dẫn Andrew Dunstan trong danh sách pgsql-hacker:
Ở một số giai đoạn, có thể sẽ có một số hàm xử lý json (trái ngược với sản xuất json), nhưng không có trong 9.2.
Không ngăn anh ta cung cấp một triển khai ví dụ trong PLV8 sẽ giải quyết được vấn đề của bạn. (Liên kết hiện đã chết, hãy xem PLV8 hiện đại để thay thế.)
Postgres 9.3
Cung cấp kho các hàm và toán tử mới để thêm "xử lý json".
- Hướng dẫn về chức năng JSON mới.
- Wiki của Postgres về các tính năng mới trong trang 9.3.
Câu trả lời cho câu hỏi ban đầu trong Postgres 9.3:
SELECT *
FROM json_array_elements(
'[{"name": "Toby", "occupation": "Software Engineer"},
{"name": "Zaphod", "occupation": "Galactic President"} ]'
) AS elem
WHERE elem->>'name' = 'Toby';
Ví dụ nâng cao:
- Kết hợp truy vấn với mảng bản ghi lồng nhau trong kiểu dữ liệu JSON
Đối với các bảng lớn hơn, bạn có thể muốn thêm chỉ mục biểu thức để tăng hiệu suất:
- Chỉ mục để tìm một phần tử trong mảng JSON
Postgres 9.4
Thêm jsonb
(b đối với "nhị phân", các giá trị được lưu trữ dưới dạng các loại Postgres gốc) và nhiều chức năng hơn cho cả hai các loại. Ngoài các chỉ mục biểu thức được đề cập ở trên, jsonb
cũng hỗ trợ các chỉ mục GIN, btree và băm, GIN là chỉ số mạnh nhất trong số này.
- Hướng dẫn sử dụng
json
vàjsonb
kiểu dữ liệu và chức năng. - Wiki Postgres trên JSONB trong trang 9.4
Hướng dẫn đi xa như gợi ý:
Nói chung, hầu hết các ứng dụng nên lưu trữ dữ liệu JSON dưới dạng
jsonb
, trừ khi có những nhu cầu khá chuyên biệt, chẳng hạn như các giả định kế thừa về thứ tự các khóa đối tượng.
Nhấn mạnh đậm của tôi.
Hiệu suất được hưởng lợi từ những cải tiến chung đối với chỉ số GIN.
Postgres 9.5
Hoàn thành jsonb
hàm và toán tử. Thêm các chức năng khác để thao tác với jsonb
tại chỗ và để trưng bày.
- Tin tốt trong ghi chú phát hành của Postgres 9.5.