(PECL mongo >= 1.5.0)
MongoWriteBatch::execute — Ejecuta un lote de operaciones de escritura
$write_options
   ) : arrayEjecuta el lote de operaciones de escritura.
write_optionsVéase MongoWriteBatch::__construct.
Devuelve un array que contiene información estadística del lote completo. Si el lote tuvo que ser dividido en varios lotes, el valor devuelto acumulará los valores de los lotes individualtes y devolverá solamente el total.
   Si el lote estuviera vacío, devuelve un array que contiene solamente el campo 'ok' (como TRUE) aunque
   no se enviará nada sobre el cable (NOOP).
  
| Clave del array | Significado del valor | Devuelto por el tipo de lote | 
|---|---|---|
| nInserted | Número de documentos insertados | Lote de MongoWriteBatch::COMMAND_INSERT | 
| nMatched | Número de documentos que coinciden con los criterios de consulta | Lote de MongoWriteBatch::COMMAND_UPDATE | 
| nModified | Número de documentos que realmente es necesario modificar | Lote de MongoWriteBatch::COMMAND_UPDATE | 
| nUpserted | Número de documentos "upsert"ados | Lote de MongoWriteBatch::COMMAND_UPDATE | 
| nRemoved | Número de documentos eliminados | Lote de MongoWriteBatch::COMMAND_DELETE | 
| ok | Indicador de éxito de comando | Todos | 
Se lanza una MongoWriteConcernException en caso de error.
Ejemplo #1 Ejemplo de MongoWriteBatch::add()
Agrupar varias operaciones de inserción
<?php
$mc = new MongoClient("localhost");
$colección = $mc->selectCollection("test", "test");
$docs = array();
$docs[] = array("my" => "demo");
$docs[] = array("is" => "working");
$docs[] = array("pretty" => "well");
$lote = new MongoInsertBatch($colección);
foreach($docs as $documento) {
    $lote->add($documento);
}
$retval = $lote->execute(array("w" => 1));
var_dump($retval);
?>
El resultado del ejemplo sería:
array(2) {
  ["nInserted"]=>
  int(3)
  ["ok"]=>
  bool(true)
}
Ejemplo #2 Ejemplo de MongoWriteBatch::add()
Agrupar varias operaciones de actualización
<?php
$mc = new MongoClient("localhost");
$colección = $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,
);
$lote = new MongoUpdateBatch($colección);
$lote->add($item1);
$lote->add($item2);
$lote->add($item3);
$retval = $lote->execute(array("w" => 1));
var_dump($retval);
?>
El resultado del ejemplo sería:
array(4) {
  ["nMatched"]=>
  int(18)
  ["nModified"]=>
  int(2)
  ["nUpserted"]=>
  int(0)
  ["ok"]=>
  bool(true)
}
Ejemplo #3 Ejemplo de MongoWriteBatch::add()
Agrupar varias operaciones de eliminación
<?php
$mc = new MongoClient("localhost");
$colección = $mc->selectCollection("test", "test");
$item1 = array(
    "q" => array("my" => "demo"),
    "limit" => 1,
);
$item2 = array(
    "q" => array("try" => 3),
    "limit" => 1,
);
$lote = new MongoDeleteBatch($colección);
$lote->add($item1);
$lote->add($item2);
$retval = $lote->execute(array("w" => 1));
var_dump($retval);
?>
El resultado del ejemplo sería:
array(2) {
  ["nRemoved"]=>
  int(1)
  ["ok"]=>
  bool(true)
}