Как составить массив postgres jsonb из отдельных элементов

Я хочу создать массив postgres jsonb: [{"score": 4500, "match": 45}, {"score": 2505, "match": 467}, {"score": 967, "match": 678}], и у меня есть отдельные элементы {"score": 4500, "match": 45}, {"score": 2505, "match": 467} и т.д.

Я не хочу разбивать его на пары ключ-значение, а затем создавать объект jsonb. Есть ли способ в postgres 9.3?


person John David    schedule 23.12.2015    source источник
comment
Что значит, они у тебя с собой? Они хранятся в столбце jsonb с одним элементом в строке или что-то в этом роде? Просьба уточнить.   -  person Travis    schedule 23.12.2015


Ответы (1)


jsonb был представлен в Postgres 9.4. В Postgres 9.3.x можно придерживаться только json:

WITH json_elements(data) AS ( VALUES
  ('{"score": 4500, "match": 45}'::JSON),
  ('{"score": 2505, "match": 467}'::JSON)
)
SELECT array_to_json(array_agg(je.data)) AS result
FROM json_elements je;

Результат:

                            result                            
--------------------------------------------------------------
 [{"match": 45, "score": 4500},{"match": 467, "score": 2505}]
(1 row)
person Dmitry Savinkov    schedule 23.12.2015