Postgres JSONB 函数按字段键控对象数组
Postgres JSONB function to key an array of objects, by a field
是否有一种纯 Postgres 方法来转换 JSONB 数组,例如:
[{"id": 1, "name": "Dom" }, { "id": 2, "name": "Bass" }]
进入
{ 1: {"id": 1, "name": "Dom" }, 2: { "id": 2, "name": "Bass" } }
即和 Lodash 一样:
_.keyBy(arr, 'id)
使用函数:
create or replace function jsonb_key_by(jsonb, text)
returns jsonb language sql immutable as $$
select jsonb_object_agg(elem->>, elem)
from jsonb_array_elements() as arr(elem)
$$;
中测试
是否有一种纯 Postgres 方法来转换 JSONB 数组,例如:
[{"id": 1, "name": "Dom" }, { "id": 2, "name": "Bass" }]
进入
{ 1: {"id": 1, "name": "Dom" }, 2: { "id": 2, "name": "Bass" } }
即和 Lodash 一样:
_.keyBy(arr, 'id)
使用函数:
create or replace function jsonb_key_by(jsonb, text)
returns jsonb language sql immutable as $$
select jsonb_object_agg(elem->>, elem)
from jsonb_array_elements() as arr(elem)
$$;
中测试