MongoWriteBatch::execute

(PECL mongo >= 1.5.0)

MongoWriteBatch::executeEjecuta un lote de operaciones de escritura

Descripción

final public MongoWriteBatch::execute ( array $write_options ) : array

Ejecuta el lote de operaciones de escritura.

Parámetros

write_options

Véase MongoWriteBatch::__construct.

Valores devueltos

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

Errores/Excepciones

Se lanza una MongoWriteConcernException en caso de error.

Ejemplos

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)
}