Postgres로 JSON 데이터 질의하기

NoSQL 입문

Jake Roach

Data Engineer

Postgres로 JSON 데이터 질의하기

두 개의 테이블: 하나는 단일 JSON 타입 열을, 다른 하나는 parent_meta 열에서 정보를 추출한 쿼리 결과를 보여줌.

-> 연산자

  • 키를 받아 JSON으로 반환

->> 연산자

  • 키를 받아 텍스트로 반환

$$

SELECT
    parent_meta -> 'guardian' AS guardian
    parent_meta ->> 'status' AS status
FROM student;
NoSQL 입문

중첩 JSON 객체 질의하기

두 개의 테이블: 하나는 단일 JSON 타입 열을, 다른 하나는 parent_meta 열에서 정보를 추출한 쿼리 결과를 보여줌.

중첩 JSON 객체 질의:

  • ->->>를 함께 사용
  • 먼저 중첩 객체 반환
  • 그다음 필드 추출

$$

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

JSON 배열 질의하기

두 개의 테이블: 하나는 단일 JSON 타입 열을, 다른 하나는 parent_meta 열에서 정보를 추출한 쿼리 결과를 보여줌.

JSON 배열 요소 접근:

  • ->INT 전달 시 JSON으로 반환
  • ->>INT 전달 시 텍스트로 반환

$$

SELECT
    parent_meta -> 'educations' ->> 0
    parent_meta -> 'educations' ->> 1
FROM student;
NoSQL 입문

JSON 객체에 저장된 데이터 타입 찾기

두 개의 테이블: 하나는 단일 JSON 타입 열을, 다른 하나는 해당 JSON 객체의 타입을 단일 열로 출력한 결과를 보여줌.

json_typeof 함수

  • 최상위 객체의 타입 반환
  • ->와 함께 사용
  • 디버깅·쿼리 작성에 유용
  • 보통 ->>와는 함께 쓰지 않음

$$

SELECT
    json_typeof(parent_meta -> 'jobs')
FROM students;
NoSQL 입문

복습

SELECT
    -- 최상위 필드
    <column-name> -> '<field-name>' AS <alias>,
    <column-name> ->> '<field-name>' AS <alias>,

    -- 중첩 필드
    <column-name> -> '<parent-field-name>' ->> '<nested-field-name>' AS <alias>,

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

    -- 타입 확인
    json_typeof(<column-name> -> <field-name>) AS <alias>
FROM <table-name>;
NoSQL 입문

연습해 봅시다!

NoSQL 입문

Preparing Video For Download...