PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để truy vấn bằng cách sử dụng các trường bên trong kiểu dữ liệu PostgreSQL JSON mới?

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 jsonjsonb 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào để tắt chức năng quá tải trong Postgres không

  2. Các phương pháp hay nhất về bảo mật PostgreSQL

  3. Thực thi sql gốc với hibernate

  4. PostgreSQL:nối tiếp và danh tính

  5. Làm thế nào để chuyển đổi Unix epoch sang một dấu thời gian