MongoWriteBatch::execute

(PECL mongo >= 1.5.0)

MongoWriteBatch::executeВыполняет пакет операций записи

Описание

final public MongoWriteBatch::execute ( array $write_options ) : array

Выполняет пакет операций записи.

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

write_options

Смотрите MongoWriteBatch::__construct.

Возвращаемые значения

Возвращает массив, содержащий статистическую информацию для полного пакета. Если пакет нужно было разделить на несколько пакетов, возвращаемое значение будет агрегировать значения из отдельных пакетов и возвращать только итог.

Если пакет был пустым, возвращается массив, содержащий только поле 'ok' (как true), хотя ничего не будет отправлено (NOOP).

Ключ массива Значение Возвращается для типа пакета
nInserted Количество вставленных документов MongoWriteBatch::COMMAND_INSERT batch
nMatched Количество документов, соответствующих критериям запроса MongoWriteBatch::COMMAND_UPDATE batch
nModified Количество документов, которые действительно необходимо изменить MongoWriteBatch::COMMAND_UPDATE batch
nUpserted Количество отправленных документов MongoWriteBatch::COMMAND_UPDATE batch
nRemoved Количество удаленных документов MongoWriteBatch::COMMAND_DELETE batch
ok Индикатор успешности выполнения команды All

Ошибки

Исключение MongoWriteConcernException выдается при сбое.

Примеры

Пример #1 Пример использования MongoWriteBatch::add()

Пакетная операция вставки

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$docs = array();
$docs[] = array("my" => "demo");
$docs[] = array("is" => "working");
$docs[] = array("pretty" => "well");

$batch = new MongoInsertBatch($collection);
foreach(
$docs as $document) {
    
$batch->add($document);
}
$retval $batch->execute(array("w" => 1));
var_dump($retval);
?>

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

array(2) {
  ["nInserted"]=>
  int(3)
  ["ok"]=>
  bool(true)
}

Пример #2 Пример использования MongoWriteBatch::add()

Пакетная операция обновления

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$item1 = array(
    
"q" => array("my" => "demo"),
    
"u" => array('$set' => array("try" => 1)),
    
"multi"  => false/* значение по умолчанию */
    
"upsert" => false/* значение по умолчанию */
);
$item2 = array(
    
"q" => array("is" => "working"),
    
"u" => array('$set' => array("try" => 2)),
    
"multi" => true,
);
$item3 = array(
    
"q" => array("created" => "new-document"),
    
"u" => array('$set' => array("try" => 3)),
    
"upsert" => true,
);

$batch = new MongoUpdateBatch($collection);
$batch->add($item1);
$batch->add($item2);
$batch->add($item3);
$retval $batch->execute(array("w" => 1));
var_dump($retval);

?>

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

array(4) {
  ["nMatched"]=>
  int(18)
  ["nModified"]=>
  int(2)
  ["nUpserted"]=>
  int(0)
  ["ok"]=>
  bool(true)
}

Пример #3 Пример использования MongoWriteBatch::add()

Пакетная операция удаления

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$item1 = array(
    
"q" => array("my" => "demo"),
    
"limit" => 1,
);
$item2 = array(
    
"q" => array("try" => 3),
    
"limit" => 1,
);


$batch = new MongoDeleteBatch($collection);
$batch->add($item1);
$batch->add($item2);
$retval $batch->execute(array("w" => 1));
var_dump($retval);
?>

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

array(2) {
  ["nRemoved"]=>
  int(1)
  ["ok"]=>
  bool(true)
}