在mysql中使用和搜索jsonb数据



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

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

直接来自 MySQL 文档:

杰伦支持

从MySQL 5.7.8开始,MySQL支持本机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 及更高版本中,您可以使用 列>路径作为JSON_EXTRACT(列,路径)的简写。这行得通 作为列的别名,只要列标识符可以出现在 SQL 语句,包括 WHERE、ORDER BY 和 GROUP BY 子句。这 包括选择、更新、删除、创建表和其他 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

最新更新