首页 > 解决方案 > 从 MySQL 中的 JSON 数组中删除

问题描述

我正在通过 JSON 数组管理关注者列表。我正在使用 JSON_ARRAY_APPEND 添加关注者:

UPDATE users 
SET follows = JSON_ARRAY_APPEND(follows, '$', "followerToBeAdded") 
WHERE username = "user"

但是,我无法从此列表中删除关注者。如果我尝试 JSON REMOVE,它只会删除整个 JSON 数组,而不是仅从列表中删除特定的追随者。

对可能的查询有任何想法吗?

标签: mysqlsqlmariadb

解决方案


由于您在MySQL问题中添加了标签,因此以下响应与MySQL.

让我们考虑users具有两列username和 json 列的表follows。假设我们有一个用户名x和一个关注者a

让我们添加第二个和第三个关注者

UPDATE users SET follows = JSON_ARRAY_APPEND(follows, '$', 'b') where username ='x';
UPDATE users SET follows = JSON_ARRAY_APPEND(follows, '$', 'c') where username ='x';

删除:假设我们要删除关注者b 检查要删除的关注者

SELECT JSON_SEARCH(follows, 'one', 'b')  FROM users;

上面将给出要在数组中删除的对象的路径。

UPDATE users SET follows = JSON_REMOVE(follows, JSON_UNQUOTE(JSON_SEARCH(follows, 'one', 'b'))) WHERE JSON_SEARCH(follows, 'one', 'b') IS NOT NULL;

推荐阅读