【发布时间】:2021-07-20 19:12:20
【问题描述】:
在以下查询 (*) 中,我发现 foo_ids 作为数组的字符串表示形式返回。当我最终在 ActiveRecord::Base.connection.select_all 结果上运行 to_json 时,我看到它当然在结果输出中被表示为字符串。
SELECT
bar.a,
bar.b,
bar.c,
(
SELECT JSON_AGG(DISTINCT foo_id)
FROM foo
WHERE bar.id = foo.bar_id
) AS foo_ids
FROM bar
我可以做些什么来将所需的选择作为一个数组放入最终的 JSON 输出中,而无需修改中间结果?
(*) 该问题的查询已被简化。
【问题讨论】:
-
也许改用
ARRAY_AGG -
@AbM 我已经试过了 - 它提供了不同的数组表示法输出,但仍然是字符串包装的,例如
"{30,31}" -
我可能会以某种方式将列转换为数组,例如
'{1,1}'::int[]
标签: ruby-on-rails postgresql rails-activerecord