MongoDB\Driver\BulkWrite::__construct
(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::__construct — Создает новый объект BulkWrite
Описание
$options
= ?
)Создает новый MongoDB\Driver\BulkWrite, который является изменяемым объектом, к которому могут быть добавлены одна и несколько операций записи. Операции записи могут быть выполнены с помощью MongoDB\Driver\Manager::executeBulkWrite().
Список параметров
-
options
(array) -
options Опция Тип Описание Значение по умолчанию bypassDocumentValidation bool Если
true
, позволяет выполнять операции вставки или обновления, чтобы обойти проверку уровня документа.Этот параметр доступен в MongoDB 3.2+ и игнорируется в более старых версиях сервера, которые не поддерживают проверку уровня сервера.
false
ordered bool Отсортированные операции ( true
) выполняется последовательно на сервере MongoDB, тогда как неотсортированные операции (false
) отправляются на сервере в произвольном порядке и могут выполняться параллельно.true
Ошибки
- При ошибке парсинга аргумента бросает исключение MongoDB\Driver\Exception\InvalidArgumentException.
Список изменений
Версия | Описание |
---|---|
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);
} 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