Spec-Zone.ru › MySQL 9.2

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]")
Связанная информация
  • В Руководстве по MySQL содержатся инструкции по поиску и изменению значений JSON.

  • См. для полного определения синтаксиса.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-shell-tutorial-python-documents-modify.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API