В репозиторий Postgres упал комит, упрощающий работу с jsonb. Теперь можно обращаться к частям jsonb с помощью квадратных скобок, причем это работает и на чтение, и на запись.
Прощай jsonb_set и прочие костыли типа data = data - 'a' || '{"a":5}'
Несколько примеров:
Изменения войдут в postgreSQL14!
#postgresql
Прощай jsonb_set и прочие костыли типа data = data - 'a' || '{"a":5}'
Несколько примеров:
-- Получаем значение объекта по ключу "a"
SELECT ('{"a": 1}'::jsonb)['a'];
-- Или можно указать длинный путь
SELECT ('{"a": {"b": {"c": 1}}}'::jsonb)['a']['b']['c'];
-- Элемент массива по индексу
SELECT ('[1, "2", null]'::jsonb)[1];
-- Обновляем значение объекта по ключу. Единица взята в кавычки, потому что присваиваемое значение должно быть тоже jsonb
UPDATE table_name SET jsonb_field['key'] = '1';
-- Фильтруем таблицу по полю key=value. Value тоже записано в форме jsonb: '"value"'
SELECT * FROM table_name WHERE jsonb_field['key'] = '"value"';
Изменения войдут в postgreSQL14!
#postgresql
👀2