MongoWriteBatch::add

(PECL mongo >= 1.5.0)

MongoWriteBatch::addAjoute une opération d'écriture dans un lot

Description

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

Ajoute une opération d'écriture dans un lot.

Si le paramètre $item fait que le lot excède les limites maxWriteBatchSize ou maxBsonObjectSize, le driver va, en interne, couper les lots en plusieurs commandes d'écriture avant d'appeler la méthode MongoWriteBatch::execute().

Liste de paramètres

item

Un tableau qui décrit une opération d'écriture. La structure de cette valeur dépoend du type de l'opération du lot.

Type du lot Signification
MongoWriteBatch::COMMAND_INSERT Le document à ajouter.
MongoWriteBatch::COMMAND_UPDATE

Opération brute de mise à jour.

Les clés requises sont "q" et "u", qui correspondent aux paramètres $criteria et $new_object de MongoCollection::update(), respectivement.

Les clés optionnelles sont "multi" et "upsert", qui correspondent aux options "multiple" et "upsert" pour MongoCollection::update(), respectivement. Si on spécifiés, les deux options vaudront par défaut FALSE.

MongoWriteBatch::COMMAND_DELETE

Opération brute de suppression.

Les clés requises sont : "q" et "limit", qui correspondent au paramètre $criteria et à l'option "justOne" de MongoCollection::remove(), respectivement.

L'option "limit" est de type integer ; cependant, MongoDB ne supporte que la valeur 0 (i.e. supprime tous les documents correspondants) et la valeur 1 (i.e. supprime au moins un document correspondant) pour le moment.

Valeurs de retour

Retourne TRUE en cas de succès, et lance une exception si une erreur survient.

Erreurs / Exceptions

  • Une exception Exception sur un échec d'analyse du paramètre
  • Une exception Exception sur une erreur de validation de l'argument (i.e. clés manquantes)

Exemples

Exemple #1 Exemple avec MongoWriteBatch::add()

Mise en lot de plusieurs opérations d'insertion

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$docs = array();
$docs[] = array("my" => "demo");
$docs[] = array("is" => "working");
$docs[] = array("pretty" => "well");

$batch = new MongoInsertBatch($collection);
foreach(
$docs as $document) {
    
$batch->add($document);
}
$batch->execute(array("w" => 1));
?>

Exemple #2 Exemple avec MongoWriteBatch::add()

Mise en lot de plusieurs opérations de mise à jour

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$item1 = array(
    
"q" => array("my" => "demo"),
    
"u" => array('$set' => array("try" => 1)),
    
"multi"  => false/* Valeur par défaut */
    
"upsert" => false/* Valeur par défaut */
);
$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,
);

$batch = new MongoUpdateBatch($collection);
$batch->add($item1);
$batch->add($item2);
$batch->add($item3);
$batch->execute(array("w" => 1));

?>

Exemple #3 Exemple avec MongoWriteBatch::add()

Mise en lot de plusieurs opérations de suppression

<?php
$mc 
= new MongoClient("localhost");
$collection $mc->selectCollection("test""test");


$item1 = array(
    
"q" => array("my" => "demo"),
    
"limit" => 1,
);
$item2 = array(
    
"q" => array("try" => 3),
    
"limit" => 1,
);


$batch = new MongoDeleteBatch($collection);
$batch->add($item1);
$batch->add($item2);
$batch->execute(array("w" => 1));
?>