Kỹ thuật truy vấn JSON nâng cao trong Postgres

Giới thiệu về NoSQL

Jake Roach

Data Engineer

Truy vấn dữ liệu JSON lồng nhau

SELECT
    parent_meta -> 'jobs' ->> 'P1' AS jobs_P1,
    parent_meta -> 'jobs' ->> 'P2' AS jobs_P2
FROM student;

$$

Để truy vấn dữ liệu lồng nhau dễ hơn:

  • Toán tử #>#>>
  • Hàm json_extract_pathjson_extract_path_text
Giới thiệu về NoSQL

Toán tử #> và #>>

Hai bảng: bảng đầu là dữ liệu tài liệu; bảng sau hiển thị nhiều trường được trích xuất bằng toán tử hash mũi tên và hash mũi tên kép.

Toán tử #>

  • Gọi trên cột, nhận một mảng chuỗi
  • Trả về null nếu đường dẫn không tồn tại
  • #>> trả về trường dạng text

$$

SELECT
    parent_meta #> '{jobs}' AS jobs,
    parent_meta #> '{jobs, P1}' AS jobs_P1,
    parent_meta #> '{jobs, income}' AS income,
    parent_meta #>> '{jobs, P2}' AS jobs_P2
FROM student;
Giới thiệu về NoSQL

json_extract_path và json_extract_path_text

json_extract_path

  • Truyền cột và danh sách trường tùy ý
  • Trả về null nếu đường dẫn không tồn tại
  • json_extract_path_text

$$

SELECT
  json_extract_path(parent_meta, 'jobs') AS jobs,
  json_extract_path(parent_meta, 'jobs', 'P1') AS jobs_P1,
  json_extract_path(parent_meta, 'jobs', 'income') AS income,
  json_extract_path_text(parent_meta, 'jobs', 'P2') AS jobs_P2,
FROM student;

Hai bảng: bảng đầu là dữ liệu tài liệu; bảng sau hiển thị nhiều trường được trích xuất bằng các hàm json_extract_path và json_extract_path_text.

Giới thiệu về NoSQL

Ôn tập

SELECT
    <column-name> #> '{<field-name>}' AS <alias>,
    <column-name> #> '{<field-name>, <field-name>}' AS <alias>,
    <column-name> #>> '{<field-name>, <field-name>}' AS <alias>
FROM <table-name>;
SELECT
  json_extract_path(<column-name>, '<field-name>') AS <alias>,
  json_extract_path(<column-name>, '<field-name>', '<field-name>') AS <alias>,
  json_extract_path_text(<column-name>, '<field-name>', '<field-name>') AS <alias>
FROM <table-name>;
Giới thiệu về NoSQL

Hãy luyện tập!

Giới thiệu về NoSQL

Preparing Video For Download...