ruby-on-rails - 查询 JSON 字段以按变体类型获取产品变体
问题描述
所以我正在开发一个电子商务应用程序,我有一个名为产品变体的表,我在其中使用 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"]}
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
推荐阅读
- xml - 这种类似 XML 的格式的 mimetype / 格式是什么?
- python - 从 Google Drive Colab 下载数据
- c# - 如何创建工厂以创建接受更多派生类型的参数的派生对象
- javascript - 一阵到四阵
- python - groupby week - 熊猫数据框
- excel - Excel 列中的自动填充嵌套 IF 公式
- python - |as_crispy_field 在 CharField 中传递了一个无效或不存在的字段
- vue.js - 你如何使用来自 Nuxt 内容模块的数据的组件
- javascript - 我的 javascript queryselectorall 没有按预期捕获第二个类名
- cypress - Cypress:是否可以提取通过单击打开的新浏览器选项卡的 URL?