Я делаю цикл для создания новой матрицы json только с определенными элементами, для этого мне нужно пройти через ранее созданный массив json и PUSH (ADD ELEMENT) и POP (REMOVE ELEMENT) элементы в соответствии сусловие.
Я получаю что-то подобное
[
{"id":1 , "data": "test_a"},
{"id":2 , "data": "test_t"},
{"id":3 , "data": "test_h"},
.....
]
и я делаю что-то подобное с циклом
DECLARE
_test json;
i json;
_new_jsn json;
BEGIN
_test := SELECT json_agg(json_build_object('id', 1, 'data', 'test'))
FOR i IN SELECT * FROM json_array_elements(_test) LOOP
RAISE NOTICE 'element %',i;
END LOOP;
Отсюда я не знаюкак продолжить, чтобы сделать ДОБАВИТЬ и УДАЛИТЬ элемент в новом параметре.
Мой фильтр основан на IF-ELSE, поэтому, если у меня есть
FOR i IN SELECT * FROM json_array_elements(_test) LOOP
IF i->>id > 2 THEN
..... Add the element in _new_jsn
ELSE
.... Remove/Ignore the element
END IF;
END LOOP;
, я хочу получить после циклакак то так
[
{"id":3 , "data": "test_h"},
{"id":4 , "data": "test_c"},
.....
]