เทคนิคขั้นสูงสำหรับคิวรี JSON ใน Postgres

NoSQL เบื้องต้น

Jake Roach

Data Engineer

การคิวรีข้อมูล JSON แบบซ้อน

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

$$

เพื่อให้การคิวรีข้อมูลแบบซ้อนง่ายขึ้น:

  • ตัวดำเนินการ #> และ #>>
  • ฟังก์ชัน json_extract_path และ json_extract_path_text
NoSQL เบื้องต้น

ตัวดำเนินการ #> และ #>>

ตารางสองตาราง ตารางแรกแสดงข้อมูลแบบ document และตารางที่สองแสดงฟิลด์ที่ดึงออกมาโดยใช้ตัวดำเนินการ hash arrow และ hash double arrow

ตัวดำเนินการ #>

  • เรียกใช้กับคอลัมน์ โดยรับ string array
  • คืนค่า null หากไม่พบ path
  • #>> คืนค่าฟิลด์เป็น 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;
NoSQL เบื้องต้น

json_extract_path และ json_extract_path_text

json_extract_path

  • ระบุคอลัมน์และรายการฟิลด์ที่ต้องการ
  • คืนค่า null หากไม่พบ path
  • 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;

ตารางสองตาราง ตารางแรกแสดงข้อมูลแบบ document และตารางที่สองแสดงฟิลด์ที่ดึงออกมาโดยใช้ฟังก์ชัน json_extract_path และ json_extract_path_text

NoSQL เบื้องต้น

ทบทวน

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>;
NoSQL เบื้องต้น

มาฝึกกันเถอะ!

NoSQL เบื้องต้น

Preparing Video For Download...