【问题标题】:Querying a JSON field to get product variants by variant type查询 JSON 字段以按变体类型获取产品变体
【发布时间】:2020-09-12 11:03:52
【问题描述】:

所以我正在开发一个电子商务应用程序,并且我有一个名为产品变体的表,我在其中使用 jsonb 数据类型动态存储产品变体。我的数据是这样存储的!

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"]} 是您需要的吗?

标签: ruby-on-rails postgresql e-commerce jsonb


【解决方案1】:

转换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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多