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 valueExtraçã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 keysConsultas 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
- JSONB vs JSON: quando usar cada um
- Operadores de caminho: -> ->> @>
- Indexação de JSONB com GIN
- Modelagem: quando JSONB supera a normalização