2015-12-23 4 views
0

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

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

+0

Что ты имеешь в виду у них "с вами"? Сохраняются ли они в столбце jsonb с одним элементом в строке или чем-то еще? Просьба уточнить. – Travis

ответ

0

jsonb был introduced in 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) 
+0

Спасибо большое! Оно работает :) –