MySQL 8.4 发行说明
在 MySQL 中,一个表可以包含传统的关系数据、JSON 值或两者兼有。您可以通过将文档存储在具有原生 JSON
数据类型的列中,将传统数据与 JSON 文档组合在一起。
本节中的示例使用 world_x
模式中的 city 表。
city 表有五列(或字段)。
+---------------+------------+-------+-------+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +---------------+------------+-------+-------+---------+------------------+ | ID | int(11) | NO | PRI | null | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | | | | | District | char(20) | NO | | | | | Info | json | YES | | null | | +---------------+------------+-------+-------+---------+------------------+
要将文档插入表的列中,请将格式正确的 JSON 文档按正确顺序传递给 values()
方法。在以下示例中,将文档作为最终值传递以插入到 Info 列中。
Press CTRL+C to copymysql-js> db.city.insert().values( None, "San Francisco", "USA", "California", '{"Population":830000}')
您可以发出一个查询,该查询包含一个在表达式中评估文档值的搜索条件。
Press CTRL+C to copymysql-js> db.city.select(["ID", "Name", "CountryCode", "District", "Info"]).where( "CountryCode = :country and Info->'$.Population' > 1000000").bind( 'country', 'USA') +------+----------------+-------------+----------------+-----------------------------+ | ID | Name | CountryCode | District | Info | +------+----------------+-------------+----------------+-----------------------------+ | 3793 | New York | USA | New York | {"Population": 8008278} | | 3794 | Los Angeles | USA | California | {"Population": 3694820} | | 3795 | Chicago | USA | Illinois | {"Population": 2896016} | | 3796 | Houston | USA | Texas | {"Population": 1953631} | | 3797 | Philadelphia | USA | Pennsylvania | {"Population": 1517550} | | 3798 | Phoenix | USA | Arizona | {"Population": 1321045} | | 3799 | San Diego | USA | California | {"Population": 1223400} | | 3800 | Dallas | USA | Texas | {"Population": 1188580} | | 3801 | San Antonio | USA | Texas | {"Population": 1144646} | +------+----------------+-------------+----------------+-----------------------------+ 9 rows in set (0.01 sec)
有关更多信息,请参阅 使用关系表和文档。
有关数据类型的详细描述,请参阅 第 13.5 节“JSON 数据类型”。