De acordo com o telegrama do canal Cross the Join , o repositório Postgres caiu Komichi , mais fácil de trabalhar com jsonb. Agora você pode acessar partes do jsonb usando colchetes, e isso funciona tanto para leitura quanto para escrita.
Adeus jsonb_set e outras muletas como data = data - 'a' || '{"a":5}'
Alguns exemplos:
Atualizamos o valor do objeto por chave. 25 é um número aqui, mas colocado entre aspas porque o valor atribuído deve ser jsonb
-- (person_data jsonb)
UPDATE users
SET person_data['age'] = '25';
A atualização também funciona com jsonb vazio (nulo).
Filtramos a tabela pelo campo name = Pasha. Pasha é uma string, mas também escrita na forma jsonb: '"Pasha"', portanto, aspas duplas extras
SELECT *
FROM users
WHERE person_data['name'] = '"Pasha"';
Pegue o valor do objeto pela chave "idade"
SELECT ('{"age": 25}'::jsonb)['age'];
Ou você pode especificar um caminho longo
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
Elemento de array por índice
SELECT ('[1, "2", null]'::jsonb)[1];
Mais importante ainda, as mudanças serão incluídas no postgreSQL 14!
A ideia original da sintaxe pertence a Oleg Bartunov, implementação - Dmitry Dolgov