文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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 欄位。

注意

在未指定搜尋條件的情況下修改文件時,請小心;這麼做會修改集合中的所有文件。

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]")
相關資訊