Postgresql

將對象聚合到 json 數組中(子查詢問題)

  • August 3, 2021

我很抱歉這個模糊的標題,但我根本不知道合適的詞來描述這個。

我有這個查詢將一堆列轉換為一個可以正常工作的對象:

SELECT row_to_json(t)
FROM (
 SELECT type, properties, geometry FROM "bgbCargoMinardJSON"
) t

但是,我想將屬於某個類別的對象分組到一個數組中。此類別由我的表中名為“cargoProductId”的第四列定義。該數組應以“cargoProductId”的值作為鍵。所以:

"961":[
{"type":"Feature",....
{"type":"Feature",....
{"type":"Feature",....
],
"962":[
.....
]

所以在過去的 1 1/2 小時左右,我一直在努力解決這個問題。我真的不知道該怎麼做。這就是我現在所擁有的:

SELECT array_agg(row_to_json(t))
FROM (
 SELECT type, properties, geometry FROM "bgbCargoMinardJSON"
) t) FROM "bgbCargoMinardJSON" GROUP BY "carProductId"

如果您使用的是 9.4,則可能是您所追求的:

select json_object(array_agg(id)::text[],array_agg(rw)::text[])
from( select id
          , ( select to_json(array_agg(row_to_json(t)))
              from (select typ,prop from bgb where id=b.id) t ) rw
     from bgb b
     group by id ) z;

擴展傑克答案:刪除撇號和斜線使用json_build_object

select json_build_object(id,rw)
from( select id
          , ( select to_json(array_agg(row_to_json(t)))
              from (select typ,prop from bgb where id=b.id) t ) rw
     from bgb b
     group by id ) z;

我認為它會起作用。

引用自:https://dba.stackexchange.com/questions/102085