Spec-Zone.ru › MySQL 9.2

22.3.3.4 Изменение документов

Вы можете использовать метод modify() для обновления одного или нескольких документов в коллекции. API X DevAPI предоставляет дополнительные методы для использования с методом modify() для:

  • Установки и сброса полей в документах.

  • Добавления, вставки и удаления массивов.

  • Связывания, ограничения и сортировки изменяемых документов.

Установка и сброс полей документов

Метод modify() работает, фильтруя коллекцию, чтобы включить только изменяемые документы, а затем применяет указанные операции к этим документам.

В следующем примере метод modify() использует условие поиска для определения документа для изменения, а затем метод set() заменяет два значения в вложенном объекте demographics.

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

После изменения документа используйте метод find() для проверки изменения.

Для удаления содержимого из документа используйте методы modify() и unset(). Например, следующий запрос удаляет GNP из документа, соответствующего условию поиска.

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

Используйте метод find() для проверки изменения.

mysql-js> 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
    }
}
Добавление, вставка и удаление массивов

Для добавления элемента в массивное поле, или вставки, или удаления элементов в массиве, используйте методы arrayAppend(), arrayInsert() или arrayDelete(). Следующие примеры изменяют коллекцию countryinfo для включения отслеживания международных аэропортов.

В первом примере используются методы modify() и set() для создания нового поля Airports во всех документах.

Внимание

Будьте осторожны при изменении документов без указания условия поиска; это изменит все документы в коллекции.

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

После добавления поля Airports, в следующем примере используется метод arrayAppend() для добавления нового аэропорта в один из документов. $.Airports в следующем примере представляет поле Airports текущего документа.

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

Используйте find() для просмотра изменений.

mysql-js> 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
    }
}

Для вставки элемента в другое положение в массиве, используйте метод arrayInsert() для указания индекса вставки в выражении пути. В этом случае индекс равен 0, или первый элемент в массиве.

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

Для удаления элемента из массива, вы должны передать методу arrayDelete() индекс удаляемого элемента.

mysql-js> db.countryinfo.modify("Name = 'France'").arrayDelete("$.Airports[1]")
Связанная информация
  • В Руководстве MySQL Reference Manual содержатся инструкции по поиску и изменению значений JSON.

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

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

Spec-Zone.ru

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