PostgreSQL | Как наполнить пустой JSONB-массив объектами?

PostgreSQL | Как наполнить пустой JSONB-массив объектами?

У нас имеется 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-массив.

Наполнили JSONB-массив 6 объектами
Наполнили JSONB-массив 6 объектами