İleri düzey Postgres JSON sorgulama teknikleri

NoSQL'a Giriş

Jake Roach

Data Engineer

İç içe JSON verilerini sorgulama

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

$$

İç içe verileri sorgulamayı kolaylaştırmak için:

  • #> ve #>> operatörleri
  • json_extract_path ve json_extract_path_text fonksiyonları
NoSQL'a Giriş

#> ve #>> operatörleri

İki tablo: ilki belge verisini, ikincisi ise bu belgeden hash ok ve çift hash ok operatörleriyle çıkarılan alanları gösteriyor.

#> operatörü

  • Sütunda çağrılır, bir dizi yol alır
  • Yol yoksa null döner
  • #>> alanı metin olarak döndürür

$$

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'a Giriş

json_extract_path ve json_extract_path_text

json_extract_path

  • Sütun ve isteğe bağlı alan listesi verin
  • Yol yoksa null döner
  • 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;

İki tablo: ilki belge verisini, ikincisi ise bu belgeden json_extract_path ve json_extract_path_text fonksiyonlarıyla çıkarılan alanları gösteriyor.

NoSQL'a Giriş

Gözden geçirme

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'a Giriş

Hadi pratik yapalım!

NoSQL'a Giriş

Preparing Video For Download...