postgresql 如何在适当的位置修改jsonb,添加键和移动值以帮助以后的查询

prdp8dxp  于 2023-03-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(91)

我在postgres db,table中有以下假设的数据项:用户跟踪

id: 210 
date: 2022-02-06 17:05:44.000 +0600 
item_json: {"MouseDown": "202,2525"}

id: 212 
date: 2022-02-06 17:05:46.000 +0600 
item_json: {"MouseUp": "299,2530"}

问题是我在如何将数据放入jsonb中犯了一个错误,我实际上想要的是:

id: 210 
date: 2022-02-06 17:05:44.000 +0600 
item_json: {"action": "MouseDown", "value": "202,2525"}

id: 212 
date: 2022-02-06 17:05:46.000 +0600 
item_json: {"action": "MouseUp", "value": "299,2530"}

我试图找出如何修改那里的数据,逐行,以获得结果,因为我意识到这不是一个最佳的可查询格式,否则。

nkoocmlb

nkoocmlb1#

您可以使用jsonb_each将JSONB对象解构为一个表,然后使用jsonb_build_object构造一个新的表。(Documentation

UPDATE user_tracking SET item_json = (
  SELECT jsonb_build_object(
    'action', key,
    'value', value
  )
  FROM jsonb_each(item_json)
);

(Make确保在进行此类大更改之前备份表,以防万一。)

相关问题