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)
$$;

db<>fiddle.

中测试