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 keysZapytania ś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
- JSONB a JSON: kiedy używać którego
- Operatory ścieżek: -> ->> @>
- Indeksowanie JSONB za pomocą GIN
- Modelowanie: kiedy JSONB wygrywa z normalizacją