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));
?>