Según el canal de telegramas Cross the Join , el repositorio Postgres cayó Komichi , más fácil de trabajar con jsonb. Ahora puede acceder a partes de jsonb usando corchetes, y esto funciona tanto para lectura como para escritura.
Adiós jsonb_set y otras muletas como data = data - 'a' || '{"a":5}'
Algunos ejemplos:
Actualizamos el valor del objeto por clave. 25 es un número aquí, pero entre comillas porque el valor asignado debe ser jsonb
-- (person_data jsonb)
UPDATE users
SET person_data['age'] = '25';
La actualización también funciona con jsonb vacío (nulo).
Filtramos la tabla por el campo name = Pasha. Pasha es una cadena, pero también está escrito en forma jsonb: '"Pasha"', así que comillas dobles adicionales
SELECT *
FROM users
WHERE person_data['name'] = '"Pasha"';
Obtenga el valor del objeto por la clave "edad"
SELECT ('{"age": 25}'::jsonb)['age'];
O puede especificar una ruta larga
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
Elemento de matriz por índice
SELECT ('[1, "2", null]'::jsonb)[1];
¡Lo más importante es que los cambios se incluirán en postgreSQL 14!
La idea original de la sintaxis pertenece a Oleg Bartunov, implementación - Dmitry Dolgov