0Pricing
SQL Academy · Lekcja

Operatory ścieżek: -> ->> @>

Poruszać się po dokumentach JSONB za pomocą operatorów ->, ->>, #>> oraz sprawdzać zawieranie za pomocą @> i rodziny funkcji jsonb_path_query

Operatory ścieżek: -> ->> @> to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Trzy rodziny operatorów

Operatory ścieżek JSONB występują w trzech odmianach:

  • -> i ->> — wyodrębnianie według klucza lub indeksu
  • #> i #>> — wyodrębnianie według ścieżki
  • @> i ? — sprawdzanie zawierania / istnienia klucza

-> zwraca JSONB

Wyodrębnianie wartości z zachowaniem typu JSONB:

SELECT data->'user_id' FROM events;
-- returns JSONB like  42

SELECT data->0 FROM events;
-- first element of a JSONB array

->> zwraca tekst

Wyodrębnianie wartości jako TEXT — przydatne podczas rzutowania:

SELECT data->>'user_id'  FROM events;
-- '42'  (TEXT)

SELECT (data->>'user_id')::BIGINT FROM events;
-- 42    (BIGINT)

#> wyodrębnianie ścieżki (JSONB)

Przechodzenie przez wiele poziomów za pomocą tablicy kluczy:

SELECT data #> '{user, address, city}' FROM events;
-- nested JSONB value

#>> wyodrębnianie ścieżki (TEXT)

Tak samo jak #>, ale zwraca TEXT:

SELECT data #>> '{user, address, city}' FROM events;
-- 'Berlin'

@> zawieranie

„Czy dokument zawiera ten poddokument?” — najczęściej używany filtr:

SELECT * FROM events
WHERE data @> '{"type":"login"}';

-- Works for nested matching too:
WHERE data @> '{"user":{"plan":"pro"}}'

? istnienie klucza

Sprawdzanie, czy klucz istnieje na najwyższym poziomie:

SELECT * FROM events WHERE data ? 'error';
SELECT * FROM events WHERE data ?| ARRAY['a','b'];    -- any of these keys
SELECT * FROM events WHERE data ?& ARRAY['a','b'];    -- all of these keys

Zapytania ścieżek JSONB (jsonb_path_query)

Nowoczesny PostgreSQL obsługuje wyrażenia ścieżek SQL/JSON:

SELECT jsonb_path_query(data, '$.user.tags[*]') FROM events;
SELECT jsonb_path_exists(data, '$.user.tags[*] ? (@ == "admin")') FROM events;

Łączenie z indeksami

Indeks GIN przyspiesza operatory @> i ?:

CREATE INDEX events_data_gin ON events USING GIN (data);
-- supports @>, ?, ?|, ?&

CREATE INDEX events_data_path_gin ON events USING GIN (data jsonb_path_ops);
-- smaller, faster — but only supports @>

Odpytywanie tablic wewnątrz JSONB

Znajdowanie dokumentów, których tablica zawiera daną wartość:

SELECT * FROM events
WHERE data->'tags' @> '["admin"]'::JSONB;

-- Or via path query:
SELECT * FROM events
WHERE jsonb_path_exists(data, '$.tags[*] ? (@ == "admin")');

Aktualizowanie JSONB

Do modyfikacji służą jsonb_set, || i -:

UPDATE events
SET data = jsonb_set(data, '{user,plan}', '"pro"')
WHERE id = 1;

UPDATE events SET data = data || '{"new_field":true}'::JSONB;
UPDATE events SET data = data - 'old_field';

Agregowanie JSONB

Grupowanie wielu wierszy w jedną wartość JSONB:

SELECT jsonb_agg(data) FROM events WHERE user_id = 42;
SELECT jsonb_object_agg(name, value) FROM settings;

Podsumowanie

Operatory ścieżek umożliwiają wszystko — od wyodrębniania po modyfikowanie danych.

  • -> JSONB, ->> TEXT
  • #> ścieżka, #>> ścieżka TEXT
  • @> zawieranie (obsługiwane przez indeks GIN)
  • jsonb_set / || / - do aktualizacji

Szybkie sprawdzenie

Czym różnią się data->'k' i data->>'k'?

Często zadawane pytania

Czy lekcja „Operatory ścieżek: -> ->> @>” jest bezpłatna?

Tak — pełny tekst „Operatory ścieżek: -> ->> @>” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Operatory ścieżek: -> ->> @>”?

Poruszać się po dokumentach JSONB za pomocą operatorów ->, ->>, #>> oraz sprawdzać zawieranie za pomocą @> i rodziny funkcji jsonb_path_query Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Operatory ścieżek: -> ->> @>”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. JSONB a JSON: kiedy używać którego
  2. Operatory ścieżek: -> ->> @>
  3. Indeksowanie JSONB za pomocą GIN
  4. Modelowanie: kiedy JSONB wygrywa z normalizacją
← Powrót do SQL Academy