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)
}