У нас имеется JSONB-объект:
select '{"arrjs": []}'::jsonb;
Мы хотим наполнить пустой массив, который хранится под ключом «arrjs«. Будем наполнять простыми объектами. Как это сделать?
Для примера будем использовать команду «DO«, чтобы имитировать работу функции. Внутри мы объявим наш объект и наполним его обычным диапазональным циклом в значениях от 0 до 5. Итого получится 6 объектов в массиве.
По стандарту JavaScript (ECMAScript) нумерация элементов массива начинается с нуля (0).
DO $$ declare obj jsonb := '{"arrjs": []}'; begin raise notice 'obj(ДО) = %', obj; FOR i IN 0..5 LOOP obj['arrjs'] := obj->'arrjs' || jsonb_build_object('star', 'efimstar-'||i); END LOOP; raise notice 'obj(ПОСЛЕ) = %', obj; end; $$
В результате мы получим обновлённую версию нашего JSONB-объекта, в котором мы наполнили JSONB-массив.