Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

22.4.3.4 修改文档

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

  • 在文档中设置和取消设置字段。

  • 追加、插入和删除数组。

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

设置和取消设置文档字段

modify() 方法通过过滤集合以包括要修改的文档,然后应用您指定的操作来修改这些文档。

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

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

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

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

mysql-py> db.countryinfo.modify("Name = 'Sealand'").unset("GNP")

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

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

请注意,在不指定搜索条件的情况下修改文档;这样做将修改集合中的所有文档。

mysql-py> db.countryinfo.modify("true").set("Airports", [])

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

mysql-py> db.countryinfo.modify("Name = 'France'").array_append("$.Airports", "ORY")

使用 find() 查看更改。

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,即数组中的第一个元素。

mysql-py> db.countryinfo.modify("Name = 'France'").array_insert("$.Airports[0]", "CDG")

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

mysql-py> db.countryinfo.modify("Name = 'France'").array_delete("$.Airports[1]")
相关信息
  • MySQL 参考手册提供了搜索和修改 JSON 值的说明。

  • 请参阅 CollectionModifyFunction 以获取完整的语法定义。