0Pricing
SQL Academy · Lezione

Operatori per i percorsi: -> ->> @>

Navighi nei documenti JSONB con ->, ->>, #>> e verifichi il contenimento con @> e la famiglia jsonb_path_query.

Operatori per i percorsi: -> ->> @> è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Tre famiglie di operatori

Gli operatori dei percorsi JSONB sono di tre tipi:

  • -> e ->> — estrazione tramite chiave o indice
  • #> e #>> — estrazione tramite percorso
  • @> e ? — verifica del contenimento o dell'esistenza di una chiave

-> restituisce JSONB

Estrarre un valore mantenendolo come JSONB:

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

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

->> restituisce testo

Estrarre un valore come TEXT, utile per le conversioni di tipo:

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

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

#> estrazione di un percorso (JSONB)

Attraversare più livelli tramite un array di chiavi:

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

#>> estrazione di un percorso (TEXT)

Come #>, ma restituisce TEXT:

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

@> contenimento

«Il documento contiene questo sotto-documento?» — il filtro più utile:

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

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

? esistenza di una chiave

Verificare se una chiave esiste al livello superiore:

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

Query sui percorsi JSONB (jsonb_path_query)

Le versioni moderne di PostgreSQL supportano le espressioni per i percorsi SQL/JSON:

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

Combinazione con gli indici

Un indice GIN rende veloci @> e ?:

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 @>

Interrogare gli array dentro JSONB

Trovare i documenti il cui array contiene un valore:

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

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

Aggiornare JSONB

Usare jsonb_set, || e - per modificare i dati:

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';

Aggregare JSONB

Raggruppare più righe in un unico JSONB:

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

Riepilogo

Gli operatori dei percorsi gestiscono tutto, dall'estrazione alla modifica.

  • -> JSONB, ->> TEXT
  • #> percorso, #>> percorso TEXT
  • @> contenimento (indicizzabile con GIN)
  • jsonb_set / || / - per gli aggiornamenti

Verifica rapida

Qual è la differenza tra data->'k' e data->>'k'?

Domande Frequenti

La lezione «Operatori per i percorsi: -> ->> @>» è gratuita?

Sì — il testo completo di «Operatori per i percorsi: -> ->> @>» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Operatori per i percorsi: -> ->> @>»?

Navighi nei documenti JSONB con ->, ->>, #>> e verifichi il contenimento con @> e la famiglia jsonb_path_query. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Operatori per i percorsi: -> ->> @>»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. JSONB e JSON: quando usare ciascuno
  2. Operatori per i percorsi: -> ->> @>
  3. Indicizzare JSONB con GIN
  4. Modellazione: quando JSONB supera la normalizzazione
← Torna a SQL Academy