我们以前有过PostgreSQL数据库设置并使用JSONB来保存我们在json中的一些数据,因为我们需要根据我们可以在其中存储的任何JSON来保持我们的一个列数据动态。我们还可以通过JSON键和值进行文本搜索和比较,这一切都运行良好。
最近由于某些技术原因,我们的团队决定迁移到MySQL。所以我的问题是MySQL中的JSON是否支持像PostgreSQL那样的搜索,以及MySQL支持的稳定JSON如何在版本> = MySQL 5.7.8,MySQL中引入。
答案 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中,就性能和可扩展性而言,它的工作效果非常好。
上阅读更多相关信息