MongoWriteBatch::add
(PECL mongo >= 1.5.0)
MongoWriteBatch::add — Adds a write operation to a batch
説明
public MongoWriteBatch::add
( array $item
) : bool
Adds a write operation to the batch.
If $item
causes the batch to exceed the
maxWriteBatchSize
or maxBsonObjectSize
limits, the driver will internally split the batches into multiple write
commands upon calling MongoWriteBatch::execute().
パラメータ
item
An array that describes a write operation. The structure of this value depends on the batch's operation type.
Batch type Argument expectation MongoWriteBatch::COMMAND_INSERT
The document to add. MongoWriteBatch::COMMAND_UPDATE
Raw update operation.
Required keys are
"q"
and"u"
, which correspond to the$criteria
and$new_object
parameters of MongoCollection::update(), respectively.Optional keys are
"multi"
and"upsert"
, which correspond to the"multiple"
and"upsert"
options for MongoCollection::update(), respectively. If unspecified, both options default tofalse
.MongoWriteBatch::COMMAND_DELETE
Raw delete operation.
Required keys are:
"q"
and"limit"
, which correspond to the$criteria
parameter and"justOne"
option of MongoCollection::remove(), respectively.The
"limit"
option is an int; however, MongoDB only supports0
(i.e. remove all matching documents) and1
(i.e. remove at most one matching document) at this time.
返り値
Returns true
on success and throws an exception on failure.
エラー / 例外
例
例1 MongoWriteBatch::add() example
Batching up multiple insert operations
<?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() example
Batching up multiple update operations
<?php$mc = new MongoClient("localhost");$collection = $mc->selectCollection("test", "test");$item1 = array( "q" => array("my" => "demo"), "u" => array('$set' => array("try" => 1)), "multi" => false, /* default value */ "upsert" => false, /* default value */);$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() example
Batching up multiple delete operations
<?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));?>