【发布时间】:2021-09-20 22:06:22
【问题描述】:
在 Postgresql (13+) 中,users 表有一个 JSONB[] 列 (notifications) 包含用户通知。通知由一个简单的字典填充,产生以下数组:
[
{
"notification_id": "c20da296", # abbreviating UUID4
"level": "info",
"timestamp": ...,
"content": ...
},
.. more notifications ..
]
当用户关闭通知时,我想使用通知的 id 将其从数组中删除(同时保留其他通知)。许多资源展示了如何处理 JSONB 嵌套结构(例如,here)或跨多个用户(例如,here)。有没有办法实现这一点,也许以某种方式使用- 运算符?我期待以下内容:
UPDATE users SET notifications - `{"notification_id": "c20da296"}`
WHERE user_id = "<user_uuid4>";
注意:用户的标识符是已知的,不需要遍历所有用户来选择相关的notification_id。
【问题讨论】:
-
之前好像有人问过类似的问题。他们说他们能够弄清楚如何只为一排做这件事,并且需要帮助为多排做这件事。接受的答案包括一个示例,显示它为一行或多行完成:stackoverflow.com/questions/40285583/…
-
@Matt,请参阅原始帖子 - 在您链接到该列的问题中,该列是结构化的(“名称”、“类型”、“属性”),位于属性列下。我的专栏是一个数组,而不是字典。
标签: postgresql psycopg2 jsonb