Создаёт новый объект BulkWrite

# MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__construct — Создаёт новый объект BulkWrite

### Описание

public function MongoDB\Driver\BulkWrite::__construct(?array `$options` = `null`)

Создаёт новый MongoDB\Driver\BulkWrite, который является изменяемым объектом, к которому могут быть добавлены одна и несколько операций записи. Операции записи могут быть выполнены с помощью MongoDB\Driver\Manager::executeBulkWrite().

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

`options` (array)

  options
  Опция | Тип | Описание | Значение по умолчанию
  --- | --- | --- | ---
  bypassDocumentValidation | bool | Если `true`, позволяет выполнять операции вставки или обновления, чтобы обойти проверку уровня документа. Этот параметр доступен в MongoDB 3.2+ и игнорируется в более старых версиях сервера, которые не поддерживают проверку уровня сервера. | `false`
  comment | mixed | Произвольный комментарий, помогающий отследить операцию с помощью профилировщика базы данных, вывода CurrentOp и журналов. Опция доступна в MongoDB 4.4+ и приведёт к исключению во время выполнения, если указана для более старой версии сервера.
  let | array|object | Карта имён и значений параметров. Значения должны быть константами или закрытыми выражениями, которые не ссылаются на поля документа. К параметрам можно обращаться как к переменным в контексте агрегированного выражения (например, `$$var`). Опция доступна в MongoDB 5.0+ и приведёт к исключению во время выполнения, если указана для более старой версии сервера.
  ordered | bool | Отсортированные операции (`true`) выполняется последовательно на сервере MongoDB, тогда как неотсортированные операции (`false`) отправляются на сервере в произвольном порядке и могут выполняться параллельно. | `true`

### Ошибки

- При ошибке парсинга аргумента метод выбрасывает исключение MongoDB\Driver\Exception\InvalidArgumentException.

### Список изменений

Версия | Описание
--- | ---
PECL mongodb 1.14.0 | Добавлены опции `"comment"` и `"let"`.
PECL mongodb 1.1.0 | Добавлена опция `"bypassDocumentValidation"`.

### Примеры

Пример #1 Пример использования MongoDB\Driver\BulkWrite::__construct()

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
    $bulk->delete([]);
    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);
    $bulk->update(
        ['x' => 2],
        ['$set' => ['x' => 1]],
        ['limit' => 1, 'upsert' => false]
    );
    $bulk->delete(['x' => 1], ['limit' => 1]);
    $bulk->update(
        ['_id' => 3],
        ['$set' => ['x' => 3]],
        ['limit' => 1, 'upsert' => true]
    );

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $writeConcern = new MongoDB\Driver\WriteConcern(1);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        $result = $e->getWriteResult();

        // Проверяем обеспечение гарантии записи
        if ($writeConcernError = $result->getWriteConcernError()) {
            printf("%s (%d): %s\n",
                $writeConcernError->getMessage(),
                $writeConcernError->getCode(),
                var_export($writeConcernError->getInfo(), true)
            );
        }

        // Проверяем, если какие-либо операции записи не были выполнены
        foreach ($result->getWriteErrors() as $writeError) {
            printf("Operation#%d: %s (%d)\n",
                $writeError->getIndex(),
                $writeError->getMessage(),
                $writeError->getCode()
            );
        }
    } catch (MongoDB\Driver\Exception\Exception $e) {
        printf("Другая ошибка: %s\n", $e->getMessage());
        exit;
    }

    printf("Добавлено %d документ(ов)\n", $result->getInsertedCount());
    printf("Обновлено  %d документ(ов)\n", $result->getModifiedCount());
    printf("Слито %d документ(ов)\n", $result->getUpsertedCount());
    printf("Удалено  %d документ(ов)\n", $result->getDeletedCount());

    ?>

Результат выполнения приведённого примера:

    Добавлено 2 документ(ов)
    Обновлено 1 документ(ов)
    Слито 1 документ(ов)
    Удалено  1 документ(ов)

### Смотрите также

- MongoDB\Driver\Manager::executeBulkWrite() - Выполняет операции записи
- MongoDB\Driver\WriteResult

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open