0Pricing
SQL Academy · Aula

Operadores de caminho: -> ->> @>

Navegue por documentos JSONB com ->, ->>, #>> e verifique a contenção com @> e a família jsonb_path_query.

Operadores de caminho: -> ->> @> é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Três famílias de operadores

Os operadores de caminho do JSONB vêm em três variedades:

  • -> e ->> — extraem por chave ou índice
  • #> e #>> — extraem por caminho
  • @> e ? — verificam contenção ou existência de chave

-> retorna JSONB

Extraia um valor e mantenha-o como JSONB:

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

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

->> retorna texto

Extraia um valor como TEXT — útil para conversões:

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

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

Extração por caminho #> (JSONB)

Percorra vários níveis usando uma matriz de chaves:

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

Extração por caminho #>> (TEXT)

Igual a #>, mas retorna TEXT:

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

Contenção com @>

"O documento contém este subdocumento?" — o filtro mais útil:

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

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

Existência de chave com ?

Verifique se uma chave existe no nível superior:

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

Consultas de caminho JSONB (jsonb_path_query)

O PostgreSQL moderno oferece expressões de caminho SQL/JSON:

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

Combinação com índices

Um índice GIN torna @> e ? rápidos:

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

Consultando matrizes dentro do JSONB

Encontre documentos cuja matriz contém um valor:

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

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

Atualização de JSONB

Use jsonb_set, || e - para modificar:

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

Agregação de JSONB

Agrupe várias linhas em um único JSONB:

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

Recapitulação

Os operadores de caminho fazem tudo, desde a extração até a mutação.

  • -> JSONB, ->> TEXT
  • #> caminho, #>> caminho TEXT
  • @> contenção (indexável com GIN)
  • jsonb_set / || / - para atualizações

Verificação rápida

Qual é a diferença entre data->'k' e data->>'k'?

Perguntas Frequentes

A aula “Operadores de caminho: -> ->> @>” é grátis?

Sim — o texto completo de “Operadores de caminho: -> ->> @>” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Operadores de caminho: -> ->> @>”?

Navegue por documentos JSONB com ->, ->>, #>> e verifique a contenção com @> e a família jsonb_path_query. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Operadores de caminho: -> ->> @>”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. JSONB vs JSON: quando usar cada um
  2. Operadores de caminho: -> ->> @>
  3. Indexação de JSONB com GIN
  4. Modelagem: quando JSONB supera a normalização
← Voltar para SQL Academy