给定存储在mysql中的以下json json
数据类型:
"users": [
{
"group": "manager",
"userID": "a123"
},
{
"group": "employee",
"userID": "a456"
}
]
如何使用删除用户对象 "userID": "a456"
不知道它在阵中的位置?
如果我们知道这个位置,那么下面的工作:
$query = 'UPDATE jsontable SET
jsondata = JSON_REMOVE
(
jsondata,
"$.users[1]"
);';
然而,我要找的是这样的东西:
$query = 'UPDATE jsontable SET
jsondata = JSON_REMOVE
(
jsondata,
(
JSON_SEARCH
(
jsondata,
"all",
JSON_OBJECT("userID", "a456")
)
)
);';
上面的代码为 jsondata
列。其他变体,如直接放置userid而不是 JSON_OBJECT
也会产生错误。
我需要在查询中修复什么才能生成 JSON_SEARCH
返回要从数组中移除的特定对象的路径?
记住它应该只在 users
,因为主json对象上可能有其他使用这些id的属性。
1条答案
按热度按时间qhhrdooz1#
我觉得这个
JSON_SEARCH
可能对你有用。它应该为你返回路径。最后一个参数'$**.users'
指示仅在名为users
```SELECT
JSON_SEARCH(jsondata, 'one', 'a456', null, '$**.users')
FROM jsontable
UPDATE jsontable
SET jsondata = JSON_REMOVE(
jsondata, REPLACE(
JSON_SEARCH( jsondata, 'one', 'a456', null, '$**.users' )
, '"'
, ''
)
);