查询 JSON 字段以按变体类型获取产品变体
Querying a JSON field to get product variants by variant type
所以我正在开发一个电子商务应用程序,我有一个 table 称为产品变体,我在其中使用 jsonb datatype.My 动态存储产品变体 datatype.My 数据是这样存储的!
variants: {"size": "20","color": "red"},{"size": "30","color": "yellow"}
我想以这样的方式查询变体,以便获得特定产品的特定变体的所有值,如下所示:
size: ["20","30"],color: ["red","yellow"]
我已经尝试了很多东西,但都没有得到我想要的结果!
从
转换JSONB
[{"size": "20", "color": "red"}, {"size": "30", "color": "yellow"}]
至
{"size": ["20", "30"], "color": ["red", "yellow"]}
PostgreSQL 查询:
select jsonb_object_agg(a, bs) from (
select a, jsonb_agg(b) as bs from (
select (jsonb_each(o)).* from (
select v from jsonb_array_elements(
'[{"size": "20", "color": "red"}, {"size": "30", "color": "yellow"}]'::jsonb
) t(v)
) t(o)
) tt(a, b)
group by a
) ttt
所以我正在开发一个电子商务应用程序,我有一个 table 称为产品变体,我在其中使用 jsonb datatype.My 动态存储产品变体 datatype.My 数据是这样存储的!
variants: {"size": "20","color": "red"},{"size": "30","color": "yellow"}
我想以这样的方式查询变体,以便获得特定产品的特定变体的所有值,如下所示:
size: ["20","30"],color: ["red","yellow"]
我已经尝试了很多东西,但都没有得到我想要的结果!
从
转换JSONB[{"size": "20", "color": "red"}, {"size": "30", "color": "yellow"}]
至
{"size": ["20", "30"], "color": ["red", "yellow"]}
PostgreSQL 查询:
select jsonb_object_agg(a, bs) from (
select a, jsonb_agg(b) as bs from (
select (jsonb_each(o)).* from (
select v from jsonb_array_elements(
'[{"size": "20", "color": "red"}, {"size": "30", "color": "yellow"}]'::jsonb
) t(v)
) t(o)
) tt(a, b)
group by a
) ttt