mySQL JSON 文档存储方法,用于将数据插入节点 3 深

Posted

技术标签:

【中文标题】mySQL JSON 文档存储方法,用于将数据插入节点 3 深【英文标题】:mySQL JSON Document Store method for inserting data into node 3 levels deep 【发布时间】:2021-05-23 01:53:29 【问题描述】:

我想从这里获取数据:https://raw.githubusercontent.com/usnistgov/oscal-content/master/examples/ssp/json/ssp-example.json

我已经将一个名为“ssp_models”的 mysql 数据库拉入一个名为“json_data”的 JSON 列中,我需要在“party”节点中添加一个新的“name”和“type”条目,其中包含一个新的 uuid格式与示例相同。

所以在我的 mySQL 数据库表“ssp_models”中,我有这个条目:注意我应该能够通过以某种方式引用“66c2a1c8-5830-48bd-8fdd-55a1c3a52888”作为要修改的记录来写入数据。

我在网上看到的所有示例似乎都迫使我将整个 JSON 读入一个变量,进行加法,然后将其塞回 json_data 列,这似乎代价高昂,尤其是对于大型 JSON 数据集.

有没有简单的方法可以说

“INSERT INTO ssp_models JSON_INSERT

我正在查看另一个用于插入 JSON 的 *** 示例:

How to create and insert a JSON object using MySQL queries?

但是,当您从头开始时,这基本上很有用,而不是需要将 JSON 数据添加到已经存在的数据中。

【问题讨论】:

提供ssp_models 的 CREATE TABLE、一些示例数据作为 INSERT INTO(2-3 行)、要插入的值(存在 - 但将其格式化为代码)和所需的数据状态。并指定精确的 MySQL 版本。 【参考方案1】:

如果您要继续在 MySQL 中处理 JSON 数据,您可能需要阅读 https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html 并探索每个功能,并一一尝试。

我能够做到你这样描述的事情:

update ssp_models set json_data = json_array_append(
    json_data, 
    '$."system-security-plan".metadata.parties', 
    json_object('name', 'Bingo', 'type', 'farmer')
)
where uuid = '66c2a1c8-5830-48bd-8fdd-55a1c3a52888';

然后我检查了数据:

mysql> select uuid, json_pretty(json_data) from ssp_models\G
*************************** 1. row ***************************
                  uuid: 66c2a1c8-5830-48bd-8fdd-55a1c3a52888
json_pretty(json_data): 
  "system-security-plan": 
    "uuid": "66c2a1c8-5830-48bd-8fdd-55a1c3a52888",
    "metadata": 
      "roles": [
        
          "id": "legal-officer",
          "title": "Legal Officer"
        
      ],
      "title": "Enterprise Logging and Auditing System Security Plan",
      "parties": [
        
          "name": "Enterprise Asset Owners",
          "type": "organization",
          "uuid": "3b2a5599-cc37-403f-ae36-5708fa804b27"
        ,
        
          "name": "Enterprise Asset Administrators",
          "type": "organization",
          "uuid": "833ac398-5c9a-4e6b-acba-2a9c11399da0"
        ,
        
          "name": "Bingo",
          "type": "farmer"
        
      ]
    
  

我从像你这样的数据开始,但是对于这个测试,我截断了 parties 数组之后的所有内容。

【讨论】:

再一次,很好的帮助,因为它完美运行。

以上是关于mySQL JSON 文档存储方法,用于将数据插入节点 3 深的主要内容,如果未能解决你的问题,请参考以下文章

mongodb怎么插入多个文档

MongoDB 插入文档

PHP从Android将JSON数据插入MySQL数据库

MongoDB:数据类型插入文档查询文档

MongoDB 插入文档

MongoDB 插入文档