使用&在mysql中搜索jsonb数据

时间:2017-03-29 05:34:35

标签: mysql database postgresql jsonb

我们以前有过PostgreSQL数据库设置并使用JSONB来保存我们在json中的一些数据,因为我们需要根据我们可以在其中存储的任何JSON来保持我们的一个列数据动态。我们还可以通过JSON键和值进行文本搜索和比较,这一切都运行良好。

最近由于某些技术原因,我们的团队决定迁移到MySQL。所以我的问题是MySQL中的JSON是否支持像PostgreSQL那样的搜索,以及MySQL支持的稳定JSON如何在版本> = MySQL 5.7.8,MySQL中引入。

1 个答案:

答案 0 :(得分:4)

直接来自MySQL文档:

  

JSON支持

     

从MySQL 5.7.8开始,MySQL支持本机JSON类型。 JSON   值不会存储为字符串,而是使用内部二进制文件   允许快速读取文档元素的格式。 JSON   存储在JSON列中的文档会随时自动验证   插入或更新它们,并生成无效文档   错误。 JSON文档在创建时进行了规范化,可以进行比较   使用大多数比较运算符,例如=,<,< =,>,> =,<>,!=和   < =取代;有关支持的运算符和优先级的信息   以及MySQL在比较JSON值时遵循的其他规则,请参阅   JSON值的比较和排序。

     

MySQL 5.7.8还引入了许多用于处理的函数   JSON值。这些功能包括这里列出的功能:

     

创建JSON值的函数:JSON_ARRAY(),JSON_MERGE()和   JSON_OBJECT()。请参见第12.16.2节“创建JSON的函数”   值”。搜索JSON值的函数:JSON_CONTAINS(),   JSON_CONTAINS_PATH(),JSON_EXTRACT(),JSON_KEYS()和JSON_SEARCH()。   请参见第12.16.3节“搜索JSON值的函数”。功能   修改JSON值:JSON_APPEND(),JSON_ARRAY_APPEND(),   JSON_ARRAY_INSERT(),JSON_INSERT(),JSON_QUOTE(),JSON_REMOVE(),   JSON_REPLACE(),JSON_SET()和JSON_UNQUOTE()。见12.16.4节,   “修改JSON值的函数”。提供的功能   有关JSON值的信息:JSON_DEPTH(),JSON_LENGTH(),   JSON_TYPE()和JSON_VALID()。请参见第12.16.5节“功能”   返回JSON值属性“。在MySQL 5.7.9及更高版本中,您可以使用   column-> path作为JSON_EXTRACT(列,路径)的简写。这有效   作为列的别名,只要列标识符可以出现在   SQL语句,包括WHERE,ORDER BY和GROUP BY子句。这个   包括SELECT,UPDATE,DELETE,CREATE TABLE和其他SQL   声明。左侧必须是JSON列标识符(和   不是别名)。右侧是引用的JSON路径表达式   根据作为列返回的JSON文档进行评估   值。

     

有关更多信息,请参见第12.16.3节“搜索JSON值的函数”   有关的信息 - >和JSON_EXTRACT()。有关JSON的信息   MySQL 5.7中的路径支持,请参阅搜索和修改JSON值。   另请参见二级索引和虚拟生成列。

此外,我们一直在使用MySQL并将数据存储在JSON中,就性能和可扩展性而言,它的工作效果非常好。

您可以在https://dev.mysql.com/doc/refman/5.7/en/json.html

上阅读更多相关信息