【发布时间】:2021-06-16 01:08:20
【问题描述】:
背景
我有一个带有 json 字段的 MySQL 表。该字段存储一个 json 对象数组。 顺序并不总是相同的,所以我需要获取更新操作的键的路径。
Entity | ID, jsonField |
Entity | 1, [{clazz:'health', hp:'100'},{...},{...}] // Health the first index
Entity | 2, [{...},{...},{clazz:'health', hp:'25'}] // Health at the last index
问题
如何获取每个实体的 .hp 字段的路径以更新其值?或者......更珍贵一点,我们如何在每个实体 jsonField 数组中将 .hp 字段设置为,比如说 100,无论其位置如何?
【问题讨论】:
-
你有一个 JSON 对象数组,每个对象都有相同的字段,
clazz和hp?为什么不将这些作为行存储在第二个表中,带有clazzvarchar 列和hpint 列?然后,几乎可以轻松地用它们做任何你想做的事情。 -
@BillKarwin 谢谢,但那是不可能的。每个实体在该字段内都有 0-n 个不同的未知对象……这就是动态结构在这里很重要的原因。
-
使用正则表达式——这样会更简单快捷。
-
@Akina 谢谢,我要去调查他们!你能举个例子吗? ^^
-
请提供 CREATE TABLE 脚本和 INSERT INTO 一些示例数据(3-5 行),并显示所需的输出。