如何从单个元素组成 postgres jsonb 数组

How to compose a postgres jsonb array from individual elements

我想创建一个 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 有办法吗?

jsonbintroduced 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)