【发布时间】:2019-05-07 11:58:41
【问题描述】:
我正在尝试从 MySQL 中的 JSON 数组中删除对象。
我有一个名为 cart 的表,其中包含两个字段 quote_id 类型 int 和 items 类型 json 并在 MySQL 中存储以下行
quote_id: 0
项目:
[
{
"a":42,
"b":"test4"
},
{
"a":32,
"b":"test3"
}
]
我正在尝试创建一个查询,该查询将从 json 数组中删除 json 对象。例如每个
{
"a":32,
"b":"test3"
}
我尝试了很多查询。首先我得到了这个:
UPDATE cart
SET items = IFNULL(JSON_REMOVE(items, JSON_UNQUOTE(JSON_SEARCH(items, 'one', 'test3'))), items)
WHERE quote_id = 13392;
但是它只是从第二个对象中删除了 "b":"test3" 并将 "a":32 留在了其中,我需要一个可以找到整个对象并将其删除的查询。
这是我的第二个查询:
UPDATE cart
SET items = IFNULL(JSON_REMOVE(items, JSON_SEARCH(items, 'one', CAST('{"a": 32, "b": "test3"}' AS JSON))), items)
WHERE quote_id = 13392;
但是我认为对其进行的搜索不起作用。我在不使用 CAST()AS JSON 的情况下尝试了它,但它仍然不起作用。
正如我所说,我很确定问题出在JSON_SEARCH,但也许有人有解决方案?
谢谢!
【问题讨论】:
-
你的那个字段的数据类型是什么?
-
哪一个,信息?这是 JSON。