JSON-gegevens opvragen met Postgres

Introductie tot NoSQL

Jake Roach

Data Engineer

JSON-gegevens opvragen met Postgres

Twee tabellen: één met één kolom van het type JSON en één met het resultaat van de query die info uit de kolom parent_meta haalt.

Operator ->

  • Neemt een key, geeft veld als JSON

Operator ->>

  • Neemt een key, geeft veld als tekst

$$

SELECT
    parent_meta -> 'guardian' AS guardian
    parent_meta ->> 'status' AS status
FROM student;
Introductie tot NoSQL

Geneste JSON-objecten opvragen

Twee tabellen: één met één kolom van het type JSON en één met het resultaat van de query die info uit de kolom parent_meta haalt.

Geneste JSON-objecten opvragen:

  • Gebruik -> en ->> samen
  • Eerst het geneste object ophalen
  • Daarna het veld eruit halen

$$

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

JSON-arrays opvragen

Twee tabellen: één met één kolom van het type JSON en één met het resultaat van de query die info uit de kolom parent_meta haalt.

JSON-array-elementen benaderen:

  • Geef een INT aan ->, resultaat als JSON
  • Geef een INT aan ->>, resultaat als tekst

$$

SELECT
    parent_meta -> 'educations' ->> 0
    parent_meta -> 'educations' ->> 1
FROM student;
Introductie tot NoSQL

Het type data in JSON-objecten vinden

Twee tabellen: één met één kolom van het type JSON en één met in één kolom het type van het JSON-object als output.

json_typeof-functie

  • Geeft het type van het buitenste object
  • Gebruik met ->
  • Handig voor debuggen en query’s maken
  • Meestal niet met ->> gebruiken

$$

SELECT
    json_typeof(parent_meta -> 'jobs')
FROM students;
Introductie tot NoSQL

Herhaling

SELECT
    -- Topniveaivelden
    <column-name> -> '<field-name>' AS <alias>,
    <column-name> ->> '<field-name>' AS <alias>,

    -- Geneste velden
    <column-name> -> '<parent-field-name>' ->> '<nested-field-name>' AS <alias>,

    -- Arrays
    <column-name> -> '<parent-field-name>' -> 0 AS <alias>,
    <column-name> -> '<parent-field-name>' ->> 1 AS <alias>,

    -- Type van
    json_typeof(<column-name> -> <field-name>) AS <alias>
FROM <table-name>;
Introductie tot NoSQL

Laten we oefenen!

Introductie tot NoSQL

Preparing Video For Download...