我之前发过类似的帖子,但由于上下文错误而将其删除。
我的数据库中的一个表包含一个 JSONB 列,其中包含一组 JSON 对象。session
它与我在下面模拟的表格示例没有什么不同。
ID | 用户身份 | 快照 | 插入的_at |
---|---|---|---|
1 | 37 | {购物车:[{product_id:1,price_in_cents:3000,名称:“产品A”},{product_id:2,price_in_cents:2500,名称:“产品B”}]} | 2022-01-01 20:00:00.000000 |
2 | 24 | {购物车:[{product_id:1,price_in_cents:3000,名称:“产品A”},{product_id:3,price_in_cents:5500,名称:“产品C”}]} | 2022-01-02 20:00:00.000000 |
3 | 88 | {购物车:[{product_id:4,price_in_cents:1500,名称:“产品D”},{product_id:2,price_in_cents:2500,名称:“产品B”}]} | 2022-01-03 20:00:00.000000 |
我用来从该表中检索记录的查询如下。
SELECT sessions.*
FROM sessions
INNER JOIN LATERAL (
SELECT *
FROM jsonb_to_recordset(sessions.snapshot->'cart')
AS product(
"product_id" integer,
"name" varchar,
"price_in_cents" integer
)
) AS cart ON true;
我一直在尝试更新上面的查询以仅检索会话表中购物车中所有产品的price_in_cents
值都大于的记录2000
。
到目前为止,我在形成这个查询方面没有任何成功,但如果有人能指出我正确的方向,我将不胜感激。