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