MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

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

Описание

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

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

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

options (array)

options
Опция Тип Описание Значение по умолчанию
bypassDocumentValidation bool

Если true, позволяет выполнять операции вставки или обновления, чтобы обойти проверку уровня документа.

Этот параметр доступен в MongoDB 3.2+ и игнорируется в более старых версиях сервера, которые не поддерживают проверку уровня сервера.

false
ordered bool Отсортированные операции (true) выполняется последовательно на сервере MongoDB, тогда как неотсортированные операции (false) отправляются на сервере в произвольном порядке и могут выполняться параллельно. true

Ошибки

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

Версия Описание
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 документ(ов)

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