小编kis*_*ram的帖子

更新嵌套在 JSON 对象数组中给定键的所有值

我在 Postgres 表中有一个jsonb列。它包含以下数据:datamy_table

[
   {"id":"1","status":"test status1","updatedAt":"1571145003"},
   {"id":"2","status":"test status2","updatedAt":"1571145323"}
]
Run Code Online (Sandbox Code Playgroud)

我想updatedAt使用一个查询更新该数组中所有对象的键。我试过:

update my_table set data = data || '{"updatedAt": "1571150000"}';
Run Code Online (Sandbox Code Playgroud)

上面的查询在数组中添加了一个新对象,如下所示:

[
   {"id":"1","status":"test status1","updatedAt":"1571145003"},
   {"id":"2","status":"test status2","updatedAt":"1571145323"},
   {"updatedAt":"1571150000"}
]
Run Code Online (Sandbox Code Playgroud)

我想要的输出如下:

[
   {"id":"1","status":"test status1","updatedAt":"1571150000"},
   {"id":"2","status":"test status2","updatedAt":"1571150000"}
]
Run Code Online (Sandbox Code Playgroud)

我也尝试过jsonb_set(),但这需要第二个参数是数组索引。我无法确定数组中 JSON 对象的数量。

如果可以通过自定义函数解决这个问题,也很好。

postgresql update json postgresql-10 json-path

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

json ×1

json-path ×1

postgresql ×1

postgresql-10 ×1

update ×1