MongoWriteBatch::execute
(PECL mongo >= 1.5.0)
MongoWriteBatch::execute — Выполняет пакет операций записи
Описание
$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) }