Postgres ile JSON verisini sorgulama

NoSQL'a Giriş

Jake Roach

Data Engineer

Postgres ile JSON verisini sorgulama

İki tablo: biri tek bir JSON türü sütunu içerir, diğeri parent_meta sütunundan bilgi çıkaran sorgunun sonucunu gösterir.

-> işleci

  • Anahtar alır, alanı JSON olarak döndürür

->> işleci

  • Anahtar alır, alanı metin olarak döndürür

$$

SELECT
    parent_meta -> 'guardian' AS guardian
    parent_meta ->> 'status' AS status
FROM student;
NoSQL'a Giriş

İç içe JSON nesnelerini sorgulama

İki tablo: biri tek bir JSON türü sütunu içerir, diğeri parent_meta sütunundan bilgi çıkaran sorgunun sonucunu gösterir.

İç içe JSON nesnelerini sorgulama:

  • -> ve ->> birlikte kullanın
  • Önce içteki nesneyi döndürün
  • Sonra alanı çıkarın

$$

SELECT
    parent_meta -> 'jobs' ->> 'P1' AS jobs_P1,
    parent_meta -> 'jobs' ->> 'P2' AS jobs_P2
FROM student;
NoSQL'a Giriş

JSON dizilerini sorgulama

İki tablo: biri tek bir JSON türü sütunu içerir, diğeri parent_meta sütunundan bilgi çıkaran sorgunun sonucunu gösterir.

JSON dizi öğelerine erişim:

  • -> için INT verin, alanı JSON olarak döndürür
  • ->> için INT verin, alanı metin olarak döndürür

$$

SELECT
    parent_meta -> 'educations' ->> 0
    parent_meta -> 'educations' ->> 1
FROM student;
NoSQL'a Giriş

JSON nesnelerinde depolanan veri türünü bulma

İki tablo: biri tek bir JSON türü sütunu içerir, diğeri tek sütunda JSON nesnesinin tür çıktısını gösterir.

json_typeof fonksiyonu

  • En dıştaki nesnenin türünü döndürür
  • -> ile kullanın
  • Hata ayıklama, sorgu kurmada yararlı
  • Genelde ->> ile kullanılmaz

$$

SELECT
    json_typeof(parent_meta -> 'jobs')
FROM students;
NoSQL'a Giriş

Gözden geçirme

SELECT
    -- Üst düzey alanlar
    <column-name> -> '<field-name>' AS <alias>,
    <column-name> ->> '<field-name>' AS <alias>,

    -- İç içe alanlar
    <column-name> -> '<parent-field-name>' ->> '<nested-field-name>' AS <alias>,

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

    -- Türü
    json_typeof(<column-name> -> <field-name>) AS <alias>
FROM <table-name>;
NoSQL'a Giriş

Hadi pratik yapalım!

NoSQL'a Giriş

Preparing Video For Download...