Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


22.4.3.4 修改文档

您可以使用 modify() 方法来更新集合中的一个或多个文档。X DevAPI 提供了额外的方法用于与 modify() 方法一起使用,以:

  • 设置和取消文档字段。

  • 在数组末尾追加、插入和删除元素。

  • 绑定、限制和排序要修改的文档。

modify() 方法通过筛选集合以仅包括要修改的文档,并应用您指定的操作来工作。

以下示例中,modify() 方法使用搜索条件来识别要更改的文档,然后 set() 方法替换了嵌套在 demographics 对象中的两个值。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("Code = 'SEA'").set( "demographics", {"LifeExpectancy": 78, "Population": 28})

修改文档后,请使用 find() 方法验证更改。

要从文档中移除内容,使用 modify()unset() 方法。例如,以下查询从匹配搜索条件的文档中移除了 GNP 字段。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("Name = 'Sealand'").unset("GNP")

然后使用 find() 方法验证更改。

Press CTRL+C to copy
mysql-py> db.countryinfo.find("Name = 'Sealand'") { "_id": "00005e2ff4af00000000000000f4", "Name": "Sealand", "Code:": "SEA", "IndepYear": 1967, "geography": { "Region": "British Islands", "Continent": "Europe", "SurfaceArea": 193 }, "government": { "HeadOfState": "Michael Bates", "GovernmentForm": "Monarchy" }, "demographics": { "Population": 27, "LifeExpectancy": 79 } }

要在数组字段中追加一个元素,或者插入或删除元素,请使用 array_append()array_insert()array_delete() 方法。以下示例修改了 countryinfo 集合,以便跟踪国际机场。

第一个示例使用 modify()set() 方法在所有文档中创建一个新的 Airports 字段。

Caution

请注意,当您没有指定搜索条件时修改文档时,这会修改集合中的所有文档。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("true").set("Airports", [])

Airports 字段添加后,下一个示例使用 array_append() 方法向其中一个文档中追加了新机场。 $.Airports 在以下示例中表示当前文档的 Airports 字段。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("Name = 'France'").array_append("$.Airports", "ORY")

然后使用 find() 查看更改。

Press CTRL+C to copy
mysql-py> db.countryinfo.find("Name = 'France'") { "GNP": 1424285, "_id": "00005de917d80000000000000048", "Code": "FRA", "Name": "France", "Airports": [ "ORY" ], "IndepYear": 843, "geography": { "Region": "Western Europe", "Continent": "Europe", "SurfaceArea": 551500 }, "government": { "HeadOfState": "Jacques Chirac", "GovernmentForm": "Republic" }, "demographics": { "Population": 59225700, "LifeExpectancy": 78.80000305175781 } }

要在数组中插入元素,使用 array_insert() 方法指定要插入的索引路径表达式。例如,在这个情况下,索引是 0,即数组中的第一个元素。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("Name = 'France'").array_insert("$.Airports[0]", "CDG")

要删除数组中的元素,您必须将 array_delete() 方法传递给要删除的元素的索引。

Press CTRL+C to copy
mysql-py> db.countryinfo.modify("Name = 'France'").array_delete("$.Airports[1]")
  • MySQL 参考手册提供了有关如何搜索和修改 JSON 值的指南。

  • 请参阅 JSON 路径 以获取更多信息。查看 CollectionModifyFunction 以获取完整的语法定义。