MongoWriteBatch::add

(PECL mongo >= 1.5.0)

MongoWriteBatch::addДобавляет операцию записи в пакет

Описание

public MongoWriteBatch::add ( array $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 в случае успешного выполнения, выдает исключение в противном случае.

Ошибки

  • Exception при сбое анализа параметров
  • Exception из-за ошибок проверки аргументов (например, отсутствующие ключи)

Примеры

Пример #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));
?>