【问题标题】:Remove json object from array of objects in mysql从mysql中的对象数组中删除json对象
【发布时间】:2019-11-25 04:27:21
【问题描述】:

我在 mysql 表中有一个列 userinventory 包含以下数据,我想删除其中一个 json 对象,其中 "sellFlag":"y" 和 "product_id":"1"
[{ "price": "250", "category": "Furniture", "sellFlag": "y", "assetLink": "Furniture/Table", "product_id": "1" }, { "price": "175", "category": "Furniture", "assetLink": "Furniture/IkeaStockholmCoffeeTableBlack", "product_id": "31" }, { "price": "300", "category": "Furniture", "assetLink": "Furniture/ZanottaDamaSofaMultiseater", "product_id": "29" }, { "price": "200", "category": "Furniture", "assetLink": "Furniture/RoundTable", "product_id": "9" }]

我试过select JSON_SEARCH(userInventory,'all','y', NULL,'$[*].sellFlag') as uInvent FROM user_information WHERE user_id=50它的给出结果"$[27].sellFlag",但我也需要为product_id添加条件

成功删除后,需要以下结果。
[{ "price": "175", "category": "Furniture", "assetLink": "Furniture/IkeaStockholmCoffeeTableBlack", "product_id": "31" }, { "price": "300", "category": "Furniture", "assetLink": "Furniture/ZanottaDamaSofaMultiseater", "product_id": "29" }, { "price": "200", "category": "Furniture", "assetLink": "Furniture/RoundTable", "product_id": "9" }]

【问题讨论】:

  • 谁能告诉我如何在 json_search() 中添加两个条件?就像在下面的查询select JSON_SEARCH(userInventory,'all','y', NULL,'$[*].sellFlag') as uInvent FROM user_information 中一样,只搜索“$[*].sellFlag” 我也想为 product_id 添加条件。

标签: mysql json


【解决方案1】:

您可以将其转换为对象集合,然后在foreach 中循环它们 并测试任何条件并移除任何对象 最后将其再次转换为 json

【讨论】:

  • 这个操作需要在mysql表的某一列中进行。我可以获取完整列的值,操作和更新 mysql 表中的列,但我认为这不是最佳实践。
  • @Shijin: "sellFlag":"y" 和 "product_id":"1" 的条件在哪里解决?您的答案将始终删除 0 索引值,但在我的情况下,值并不总是在 0 索引中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 2018-07-30
  • 2018-11-13
  • 1970-01-01
相关资源
最近更新 更多