(mongodb >=2.1.0)
MongoDB\Driver\BulkWriteCommand::__construct — Создаёт новый объект BulkWriteCommand
Метод создаёт новый объект класса MongoDB\Driver\BulkWriteCommand для выполнения множественных операций вставки, обновления и удаления на наборе коллекций в одном запросе через команду » bulkWrite, которая появилась в MongoDB 8.0. Тогда как класс MongoDB\Driver\BulkWrite поддерживается всеми версиями серверов, но ограничивается одной коллекцией.
После добавления операций записи объект выполняют методом MongoDB\Driver\Manager::executeBulkWriteCommand().
options
(array)
Опция | Тип | Описание | Стандартное значение |
---|---|---|---|
bypassDocumentValidation | bool |
Со значением |
false |
comment | mixed |
Произвольный комментарий, который помогает отслеживать операцию в профилировщике базы данных, выводе команды currentOp и логах. |
|
let | array|object |
Карта имён и значений параметров. Значения должны быть константами или закрытыми выражениями, которые не ссылаются на поля документа. К параметрам можно обращаться как к переменным в контексте агрегированного выражения (например, Опция доступна в MongoDB 5.0+ и приведёт к исключению во время выполнения, если указана для более старой версии сервера. |
|
ordered | bool |
Требуется ли выполнять операции текущей массовой записи
в порядке добавления. Со значением |
true |
verboseResults | bool |
Требуется ли включать подробные результаты о каждой успешной операции в данные, которые возвращает класс MongoDB\Driver\BulkWriteCommandResult. |
false |
Пример #1 Пример создания методом MongoDB\Driver\BulkWriteCommand::__construct() команды для множественных операций записи
<?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