JSON

MySQL 5.7的原生JSON数据类型使用介绍(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-14 14:00 我要评论( )

MySQL有一些函数,可以修改JSON文档,并返回修改后的新JSON文档。路径表达式指出文档中的哪部分需要修改。这些函数比如JSON_INSERT()、JSON_REPLACE()、JSON_SET()和JSON_REMOVE()。我们以以下的JSON文档为例。 mys

MySQL有一些函数,可以修改JSON文档,并返回修改后的新JSON文档。路径表达式指出文档中的哪部分需要修改。这些函数比如JSON_INSERT()、JSON_REPLACE()、JSON_SET()和JSON_REMOVE()。我们以以下的JSON文档为例。


mysql> set @json='["apple", {"attr": [50, true], "name": "orange"}]';


JSON_INSERT()可以添加新值,但它不会替换已存在的值。


mysql> select json_insert(@json, '$[1].attr[0]', 2, '$[2]', "pear");
+-----------------------------------------------------------+
| json_insert(@json, '$[1].attr[0]', 2, '$[2]', "pear")     |
+-----------------------------------------------------------+
| ["apple", {"attr": [50, true], "name": "orange"}, "pear"] |
+-----------------------------------------------------------+


JSON_REPLACE()替换已有的值,但忽略新值,即新值不会添加到文档中。


mysql> select json_replace(@json, '$[1].attr[0]', 2, '$[2]', "pear");
+--------------------------------------------------------+
| json_replace(@json, '$[1].attr[0]', 2, '$[2]', "pear") |
+--------------------------------------------------------+
| ["apple", {"attr": [2, true], "name": "orange"}]       |
+--------------------------------------------------------+


JSON_SET()替换已有路径的值,添加未有路径的值。


mysql> select json_set(@json, '$[1].attr[0]', 2, '$[2]', "pear");
+----------------------------------------------------------+
| json_set(@json, '$[1].attr[0]', 2, '$[2]', "pear")       |
+----------------------------------------------------------+
| ["apple", {"attr": [2, true], "name": "orange"}, "pear"] |
+----------------------------------------------------------+


JSON_REMOVE()移除JSON文档中给定的一个或多个路径,如果路径不存在的话,函数会忽略该路径。


mysql> select json_remove(@json, '$[1].attr[0]', '$[2]');
+-----------------------------------------------+
| json_remove(@json, '$[1].attr[0]', '$[2]')    |
+-----------------------------------------------+
| ["apple", {"attr": [true], "name": "orange"}] |
+-----------------------------------------------+


结语

MongoDB是主要支持JSON的数据库,而MySQL增加了对流行的JSON的支持,扩展了MySQL的应用领域。到底是使用MySQL+MongoDB更好呢?还是单单使用MySQL更好呢?在不同的场景中可能有不同的答案。此外,很多人将MySQL与PostgreSQL作对比,很多文章列出了PostgreSQL比MySQL强的地方,对JSON的支持是其中一项,现在,MySQL将这弥补上了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • springmvc实现json交互 -requestBody和responseBody

    springmvc实现json交互 -requestBody和responseBody

    2017-03-15 09:05

  • JSON.parse与JSON.stringify

    JSON.parse与JSON.stringify

    2017-03-14 14:00

  • 基于.NET的JSON数据传输格式问题总结

    基于.NET的JSON数据传输格式问题总结

    2017-03-14 13:01

  • java如何调用json

    java如何调用json

    2017-03-14 12:03

网友点评