0Pricing
SQL Academy · Lección

Operadores de rutas: -> ->> @>

Navegue por documentos JSONB con ->, ->>, #>> y compruebe la contención con @> y la familia jsonb_path_query.

Operadores de rutas: -> ->> @> es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Tres familias de operadores

Los operadores de rutas JSONB se dividen en tres familias:

  • -> y ->>: extraen por clave o índice
  • #> y #>>: extraen por ruta
  • @> y ?: comprueban la contención o la existencia de claves

-> devuelve JSONB

Extraiga un valor y manténgalo como JSONB:

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

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

->> devuelve texto

Extraiga un valor como TEXT, lo que resulta útil para realizar conversiones:

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

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

#> extracción por ruta (JSONB)

Recorra varios niveles mediante una matriz de claves:

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

#>> extracción por ruta (TEXT)

Igual que #>, pero devuelve TEXT:

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

@> contención

«¿El documento contiene este subdocumento?»; es el filtro más útil:

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

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

? existencia de clave

Compruebe si existe una clave en el nivel 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 rutas JSONB (jsonb_path_query)

Las versiones modernas de PostgreSQL admiten expresiones de rutas SQL/JSON:

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

Combinación con índices

Un índice GIN hace que @> y ? sean 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 @>

Consultas de matrices dentro de JSONB

Encuentre los documentos cuya matriz contiene un valor:

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

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

Actualización de JSONB

Utilice jsonb_set, || y - para modificarlo:

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

Agregación de JSONB

Agrupe varias filas en un único JSONB:

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

Resumen

Los operadores de rutas permiten desde extraer hasta modificar datos.

  • -> JSONB, ->> TEXT
  • #> ruta, #>> ruta TEXT
  • @> contención (indexable con GIN)
  • jsonb_set / || / - para actualizaciones

Comprobación rápida

¿Cuál es la diferencia entre data->'k' y data->>'k'?

Preguntas frecuentes

¿La lección «Operadores de rutas: -> ->> @>» es gratis?

Sí — el texto completo de «Operadores de rutas: -> ->> @>» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Operadores de rutas: -> ->> @>»?

Navegue por documentos JSONB con ->, ->>, #>> y compruebe la contención con @> y la familia jsonb_path_query. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Operadores de rutas: -> ->> @>»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. JSONB frente a JSON: cuándo usar cada uno
  2. Operadores de rutas: -> ->> @>
  3. Indexación de JSONB con GIN
  4. Modelado: cuándo JSONB supera a la normalización
← Volver a SQL Academy