(mongodb >=2.1.0)
MongoDB\Driver\Manager::executeBulkWriteCommand — Выполняет операции записи через команду bulkWrite
$bulk, ?array $options = null): MongoDB\Driver\BulkWriteCommandResultМетод выполняет одну или несколько операций записи на первичном сервере через команду » bulkWrite, которая появилась в MongoDB 8.0.
Объект класса MongoDB\Driver\BulkWriteCommand создают с одной или несколькими операциями записи: вставки, обновления или удаления. Каждую операцию записи возможно нацелить на разные коллекции.
   Значение по умолчанию для опции "writeConcern"
   автоматически определяется на основе активной транзакции
   или URI-идентификатора соединения, если транзакция не содержит значения.
   На активную транзакцию указывает опция "session".
  
bulk (MongoDB\Driver\BulkWriteCommand)Одна или несколько операций записи для выполнения.
options
| Опция | Тип | Описание | 
|---|---|---|
| session | MongoDB\Driver\Session | Сессия для связывания с операцией. | 
| writeConcern | MongoDB\Driver\WriteConcern | Гарантия записи для применения к операции. | 
Метод возвращает объект класса MongoDB\Driver\BulkWriteCommandResult, если выполнился успешно.
bulk не содержит ни одной операции записи.
   bulk уже выполнились. Объекты MongoDB\Driver\BulkWriteCommand
    невозможно выполнить многократно.
   "session" указана в сочетании с неподтверждённой гарантией записи.Пример #1 Пример смешанных операций записи
Смешанные операции записи наподобие вставки, обновления или удаления отправляются на сервер одной командой » bulkWrite command.
<?php
$manager = new MongoDB\Driver\Manager();
$bulk = new MongoDB\Driver\BulkWriteCommand();
// Удалить документы из обеих коллекций
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);
// Вставить документы в две коллекции
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);
// Обновить документ в столбце "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);
$result = $manager->executeBulkWriteCommand($bulk);
printf("Количество операций вставки документов: %d\n", $result->getInsertedCount());
printf("Количество операций обновления документов: %d\n", $result->getModifiedCount());
?>Результат выполнения приведённого примера:
Количество операций вставки документов: 3 Количество операций обновления документов: 1
Пример #2 Пример упорядоченных операций записи, которые вызывают ошибку
<?php
$manager = new MongoDB\Driver\Manager();
$bulk = new MongoDB\Driver\BulkWriteCommand();
$bulk->deleteMany('db.coll', []);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 2]);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 3]);
try {
    $result = $manager->executeBulkWriteCommand($bulk);
} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
    $result = $e->getPartialResult();
    var_dump($e->getWriteErrors());
}
printf("Количество операций вставки документов: %d\n", $result->getInsertedCount());
?>Вывод приведённого примера будет похож на:
array(1) {
  [3]=>
  object(MongoDB\Driver\WriteError)#5 (4) {
    ["message"]=>
    string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
    ["code"]=>
    int(11000)
    ["index"]=>
    int(3)
    ["info"]=>
    object(stdClass)#6 (0) {
    }
  }
}
Количество операций вставки документов: 2
