MongoWriteBatch::add

(PECL mongo >= 1.5.0)

MongoWriteBatch::addAñade una operación CRUD al lote

Descripción

public bool MongoWriteBatch::add ( array $item )

La operación a añadir al lote.

Si $item causa que el lote alcance los límites » maxWriteBatchSize o » maxBsonObjectSize, se creará internamente un nuevo lote y todos los lotes se agruparán para enviar uno cada vez durante la llamada a MongoWriteBatch::execute().

Parámetros

item

Cuando el lote actual es Argumento previsto
MongoWriteBatch::COMMAND_INSERT El documento a añadir
MongoWriteBatch::COMMAND_UPDATE

Operación de acualización sin tratar. Las claves requeridas son: array("q" => array("criterios"), "u" => array("nuevos datos"))

Opcionalmente con las claves "multi" "upsert" como valores booleanos

"upsert": Si se establece a true, crea un nuevo documento cuando ningún documento coincida con los criterios. El valor predeterminado es false, el cual no inserta un nuevo documento cuando no haya coincidencias.

MongoWriteBatch::COMMAND_DELETE Operación de eliminación sin tratar. Las claves requeridas son: array("q" => array("criterios"), "limit" => 1)

Valores devueltos

Devuelve TRUE en caso de éxito, y lanza una excecpión en case de error.

Errores/Excepciones

  • Exception en fallos de análisis de parámetros
  • Exception en errores de validación de argumentos (p.ej. claves ausentes)

Ejemplos

Ejemplo #1 Ejemplo de MongoWriteBatch::add()

Poner en lotes 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);
}
$lote->execute(array("w" => 1));
?>

Ejemplo #2 Ejemplo de MongoWriteBatch::add()

Poner en lotes 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/* valor predeterminado */
    
"upsert" => false/* valor predeterminado */
);
$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);
$lote->execute(array("w" => 1));

?>

Ejemplo #3 Ejemplo de MongoWriteBatch::add()

Poner en lotes 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);
$lote->execute(array("w" => 1));
?>