MongoWriteBatch::execute
(PECL mongo >= 1.5.0)
MongoWriteBatch::execute — Description
Descripción
$write_options
)Ejecutar el MongoWriteBath.
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)
}