【发布时间】:2021-09-06 06:29:05
【问题描述】:
我正在努力寻找一种方法来更新 MySQL 中 JSON 类型字段中数组中的特定 JSON 对象。假设我有以下对象:
SET @j = '{
"cat": "meow",
"dog": "woof",
"parrot": [
{"volume": "quiet", "says": "hello"},
{"volume": "loud", "says": "polly"},
{"volume": "loud", "says": "cracker"}
]
}';
如何更新 parrot 数组中音量值为 loud 的所有对象?
我知道如果对象的位置已知,我可以使用 JSON_SET 或 JSON_REPLACE 函数来更改/更新特定对象。例如:
UPDATE T1 SET @J = JSON_SET(@j, '$.parrot[1].says', 'pretty bird');
但是我不知道对象的位置,而且这不会更新 parrot 数组中音量值为 loud 的所有对象? p>
有什么建议吗?
【问题讨论】:
-
我们也有同样的担忧。您是否找到(并可能测试)解决方案?谢谢
-
@pAkY88 经过一些测试,我只是选择在应用程序级别而不是在数据库级别处理数据更改。就我而言,这是一个更快、更简单的解决方案。