我需要以某种方式将 JSON 对象推送到可能存在的 JSON 对象的嵌套数组 - 请参阅下面的 JSON 片段中的“页面”。
{
"session_id": "someuuid",
"visitor_ui": 1,
"pages": [
{
"datetime": "2016-08-13T19:45:40.259Z",
"duration,": 0,
"device_id": 1,
"url": {
"path": "/"
}
},
{
"datetime": "2016-08-14T19:45:40.259Z",
"duration,": 0,
"device_id": 1,
"url": {
"path": "/test"
}
},
// how can i push a new value (page) here??
]
"visit_page_count": 2
}
我知道jsonb_set(target jsonb, path text[], new_value jsonb[, create_missing boolean])
(虽然仍然发现它有点难以理解)但我想使用它,需要我首先SELECT
整个 JSONB 列,以便找出“pages”内已经存在多少元素以及使用哪个索引将其推送到jsonb_set
, 正确的?我希望 Postgres 9.5 / 9.6 中有一种方法可以实现我们在编程语言中所知道的等效功能,例如。pages.push({"key": "val"})
.
使用 Postgresql 9.5 或 9.6 执行此操作的最佳和最简单的方法是什么?