Вернуть JSON как ассоциативный объект? - PullRequest
0 голосов
/ 23 декабря 2018

Я использую Postgres 11 и имею следующий SQL:

SELECT json_agg("Result"."record")
FROM (SELECT jsonb_build_object('emailAddress', "User"."emailAddress", 'displayName', "User"."displayName") as "record"
      FROM "User")
"Result"

, и он возвращает одну строку, как показано ниже:

[
  {"displayName": "Keith Stephens", "emailAddress": "kstephensqv@goo.gl"},
  {"displayName": "Robert Armstrong", "emailAddress": "rarmstrongrf@gooogle.es"}, 
  {"displayName": "Aaron Wagner", "emailAddress": "awagnerrh@cambo.ac.uk"}
]

Что бы я хотел, эторезультат в качестве ассоциативного объекта:

{
  "kstephensqv@goo.gl": {"displayName": "Keith Stephens", "emailAddress": "kstephensqv@goo.gl"},
  "rarmstrongrf@gooogle.es": {"displayName": "Robert Armstrong", "emailAddress": "rarmstrongrf@gooogle.es"}, 
  "awagnerrh@cambo.ac.uk": {"displayName": "Aaron Wagner", "emailAddress": "awagnerrh@cambo.ac.uk"}
}

Можно ли каким-либо образом получить желаемый результат, используя только выражение Postgres SQL?

1 Ответ

0 голосов
/ 23 декабря 2018

Итак, после публикации этого вопроса у меня сразу возникла мысль, и я пришел к этому, который, кажется, делает то, что я хочу:

SELECT json_object_agg("Result"."key", "Result"."record")
FROM (SELECT "User"."emailAddress" as "key", jsonb_build_object('emailAddress', "User"."emailAddress", 'displayName', "User"."displayName") as "record"
      FROM "User") "Result"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...