Pfadoperatoren: -> ->> @>
Navigieren Sie mit ->, ->>, #>> durch JSONB-Dokumente und prüfen Sie mit @> sowie der jsonb_path_query-Familie die Enthaltensein-Beziehung.
Pfadoperatoren: -> ->> @> ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Drei Operatorfamilien
JSONB-Pfadoperatoren gibt es in drei Varianten:
->und->>– Extraktion nach Schlüssel oder Index#>und#>>– Extraktion nach Pfad@>und?– Enthaltensein oder Vorhandensein eines Schlüssels prüfen
-> liefert JSONB
Einen Wert extrahieren und als JSONB beibehalten:
SELECT data->'user_id' FROM events;
-- returns JSONB like 42
SELECT data->0 FROM events;
-- first element of a JSONB array->> liefert Text
Einen Wert als TEXT extrahieren – nützlich für Typumwandlungen:
SELECT data->>'user_id' FROM events;
-- '42' (TEXT)
SELECT (data->>'user_id')::BIGINT FROM events;
-- 42 (BIGINT)#> Pfadextraktion (JSONB)
Mehrere Ebenen anhand eines Schlüsselarrays durchlaufen:
SELECT data #> '{user, address, city}' FROM events;
-- nested JSONB value#>> Pfadextraktion (TEXT)
Wie #>, gibt aber TEXT zurück:
SELECT data #>> '{user, address, city}' FROM events;
-- 'Berlin'@> Enthaltensein
„Enthält das Dokument dieses Teildokument?“ – der nützlichste Filter:
SELECT * FROM events
WHERE data @> '{"type":"login"}';
-- Works for nested matching too:
WHERE data @> '{"user":{"plan":"pro"}}'? Vorhandensein eines Schlüssels
Prüfen, ob ein Schlüssel auf der obersten Ebene vorhanden ist:
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 keysJSONB-Pfadabfragen (jsonb_path_query)
Modernes PostgreSQL unterstützt SQL/JSON-P譯ausdrücke:
SELECT jsonb_path_query(data, '$.user.tags[*]') FROM events;
SELECT jsonb_path_exists(data, '$.user.tags[*] ? (@ == "admin")') FROM events;Mit Indizes kombinieren
Ein GIN-Index macht @> und ? schnell:
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 @>Arrays innerhalb von JSONB abfragen
Dokumente finden, deren Array einen Wert enthält:
SELECT * FROM events
WHERE data->'tags' @> '["admin"]'::JSONB;
-- Or via path query:
SELECT * FROM events
WHERE jsonb_path_exists(data, '$.tags[*] ? (@ == "admin")');JSONB aktualisieren
Mit jsonb_set, || und - Änderungen vornehmen:
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';JSONB aggregieren
Mehrere Zeilen zu einem JSONB-Wert zusammenfassen:
SELECT jsonb_agg(data) FROM events WHERE user_id = 42;
SELECT jsonb_object_agg(name, value) FROM settings;Zusammenfassung
Pfadoperatoren decken alles ab, von der Extraktion bis zur Änderung.
- -> JSONB, ->> TEXT
- #> Pfad, #>> Pfad als TEXT
- @> Enthaltensein (GIN-indizierbar)
- jsonb_set / || / - für Aktualisierungen
Kurztest
Was ist der Unterschied zwischen data->'k' und data->>'k'?
Häufig gestellte Fragen
Ist die Lektion „Pfadoperatoren: -> ->> @>“ kostenlos?
Ja — der vollständige Text von „Pfadoperatoren: -> ->> @>“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Pfadoperatoren: -> ->> @>“?
Navigieren Sie mit ->, ->>, #>> durch JSONB-Dokumente und prüfen Sie mit @> sowie der jsonb_path_query-Familie die Enthaltensein-Beziehung. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Pfadoperatoren: -> ->> @>“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- JSONB vs. JSON: Wann Sie welches verwenden
- Pfadoperatoren: -> ->> @>
- JSONB mit GIN indizieren
- Datenmodellierung: Wann JSONB die Normalisierung übertrifft