Geavanceerde Postgres JSON-querytechnieken

Introductie tot NoSQL

Jake Roach

Data Engineer

Geneste JSON-data query’en

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

$$

Zo maak je geneste data makkelijker te query'en:

  • Operators #> en #>>
  • Functies json_extract_path en json_extract_path_text
Introductie tot NoSQL

Operators #> en #>>

Twee tabellen: de eerste toont documentdata, de tweede toont velden die hieruit zijn gehaald met de hash-pijl en hash-dubbelpijl-operators.

Operator #>

  • Aangeroepen op kolom, neemt een stringarray
  • Geeft null terug als pad niet bestaat
  • #>> geeft veld als tekst

$$

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;
Introductie tot NoSQL

json_extract_path en json_extract_path_text

json_extract_path

  • Geef kolom en willekeurige lijst met velden
  • Geeft null terug als pad niet bestaat
  • 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;

Twee tabellen: de eerste toont documentdata, de tweede toont velden die zijn geëxtraheerd met de functies json_extract_path en json_extract_path_text.

Introductie tot NoSQL

Herhaling

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>;
Introductie tot NoSQL

Laten we oefenen!

Introductie tot NoSQL

Preparing Video For Download...