MongoWriteBatch::add
(PECL mongo >= 1.5.0)
MongoWriteBatch::add — Добавляет операцию записи в пакет
Описание
$item
) : boolДобавляет операцию записи в пакет.
Если пакет с $item превышает размеры
maxWriteBatchSize или maxBsonObjectSize,
драйвер разделит пакеты на несколько команд записи
при вызове MongoWriteBatch::execute().
Список параметров
-
item -
Массив, описывающий операцию записи. Структура этого значения зависит от типа операции пакета.
Тип пакета Ожидаемый аргумент MongoWriteBatch::COMMAND_INSERTДокумент для добавления. MongoWriteBatch::COMMAND_UPDATEОперация необработанного обновления.
Обязательными ключами являются
"q"и"u", которые соответствуют параметрам$criteriaи$new_objectв MongoCollection::update() соответственно.Необязательными ключами являются
"multi"и"upsert", которые соответствуют опциям"multiple"и"upsert"для MongoCollection::update() соответственно. Если не указано, обе опции по умолчанию имеют значениеfalse.MongoWriteBatch::COMMAND_DELETEОперация необработанного удаления.
Обязательные ключи:
"q"и"limit", которые соответствуют параметру$criteriaи опции"justOne"MongoCollection::remove(), соответственно.Параметр
"limit"является int; однако MongoDB в настоящее время поддерживает только0(то есть удалить все соответствующие документы) и1(то есть удалить не более одного соответствующего документа).
Возвращаемые значения
Возвращает true в случае успешного выполнения,
выдает исключение в противном случае.
Ошибки
Примеры
Пример #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);
}
$batch->execute(array("w" => 1));
?>
Пример #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);
$batch->execute(array("w" => 1));
?>
Пример #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);
$batch->execute(array("w" => 1));
?>