MongoWriteBatch::add

(PECL mongo >= 1.5.0)

MongoWriteBatch::addAñade una operación de escritura a un lote

Descripción

public MongoWriteBatch::add ( array $item ) : bool

Añade una operación de escritura al lote.

Si $item hace que el lote exceda los límites » maxWriteBatchSize o » maxBsonObjectSize, el controlador dividirá internamente los lotes en varias órdenes de escritura en la llamada a MongoWriteBatch::execute().

Parámetros

item

Un array que describe una operación de escritura. La estructura de este valor depende del tipo de operación del lote.

Tipo de lote Argumento previsto
MongoWriteBatch::COMMAND_INSERT El documento a añadir.
MongoWriteBatch::COMMAND_UPDATE

Operación de acualización pura.

Las claves requeridas son "q" y "u", las cuales se corresponden a los parámetros $criteria y $new_object de MongoCollection::update(), respectivamente.

Las claves opcionales son "multi" y "upsert", las cuales se corresponden a las opciones "multiple" y "upsert" para MongoCollection::update(), respectivamente. Si no se especifican, ambas opciones se predeterminan a FALSE.

MongoWriteBatch::COMMAND_DELETE

Operación de eliminación pura..

Las claves requeridas son: "q" y "limit", las cuales se corresponden al parámetro $criteria y a la opción "justOne" de MongoCollection::remove(), respectivamente.

La opción "limit" es un integer; sin embargo, MongoDB únicamente soporta 0 (es decir, eliminar todos los documentos coincidentes) y 1 (es decir, eliminar al menos un elemento coincidente) por ahora.

Valores devueltos

Devuelve TRUE en caso de éxito y lanza una excepción en caso de fallo.

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));
?>