Collection::add

(No version information available, might only be in Git)

Collection::addДобавляет документ в коллекцию

Описание

public mysql_xdevapi\Collection::add(mixed $document): mysql_xdevapi\CollectionAdd

Запускает добавление данного документа (документов) в коллекцию, поддерживаются несколько вариантов метода. Возможные варианты:

  1. Добавление одного документа в виде строки JSON.

  2. Добавление одного документа в виде массива, например: [ 'field' => 'value', 'field2' => 'value2' ... ]

  3. В одну и ту же операцию можно добавить, как документ, так и несколько документов.

Список параметров

document

Один или несколько документов, это может быть либо JSON, либо массив полей с соответствующими значениями. Массив не может быть пустым.

Сервер MySQL автоматически генерирует уникальные значения _id для каждого документа (рекомендуется), хотя оно также может быть добавлено вручную. Это значение должно быть уникальным, иначе операция добавления не будет выполнена.

Возвращаемые значения

Объект CollectionAdd. Используйте execute() для возврата Result, который можно использовать для запроса количества затронутых элементов, количества предупреждений, сгенерированных операцией, или для получения списка сгенерированных идентификаторов для добавленных документов.

Примеры

Пример #1 Пример использования mysql_xdevapi\Collection::add()

<?php
$session
= mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$session->sql("DROP DATABASE IF EXISTS addressbook")->execute();
$session->sql("CREATE DATABASE addressbook")->execute();

$schema = $session->getSchema("addressbook");
$create = $schema->createCollection("people");

$collection = $schema->getCollection("people");

// Добавление двух документов
$collection->add('{"name": "Fred", "age": 21, "job": "Construction"}')->execute();
$collection->add('{"name": "Wilma", "age": 23, "job": "Teacher"}')->execute();

// Добавление двух документов используя один объект JSON
$result = $collection->add(
'{"name": "Bernie",
"jobs": [{"title":"Cat Herder","Salary":42000}, {"title":"Father","Salary":0}],
"hobbies": ["Sports","Making cupcakes"]}'
,
'{"name": "Jane",
"jobs": [{"title":"Scientist","Salary":18000}, {"title":"Mother","Salary":0}],
"hobbies": ["Walking","Making pies"]}'
)->execute();

// Получение списка сгенерированных идентификаторов последней операции add()
$ids = $result->getGeneratedIds();
print_r($ids);
?>

Вывод приведённого примера будет похож на:

Array
(
    [0] => 00005b6b53610000000000000056
    [1] => 00005b6b53610000000000000057
)

Примечания

Замечание:

MySQL Server 8.0 или выше генерирует уникальный _id, как показано в примере. Поле _id должно быть определено вручную, если используется MySQL Server 5.7.

add a note add a note

User Contributed Notes 2 notes

up
-1
cyork at echodreamz dot com
5 years ago
Seems that (at least with MySQL 5.7.23) if you do not set an _id field in the array of items to "add", it fails with error...

[HY000] Document is missing a required field

Adding "_id" => xxxx does resolve the issue.
up
-1
jcastro at eftec dot cl
5 years ago
It returns a mysql_xdevapi\CollectionAdd instead of a mysql_xdevapi\Result
To Top