La classe MongoWriteBatch
(PECL mongo >=1.5.0)
Introduction
MongoWriteBatch est la classe de base pour MongoInsertBatch, MongoUpdateBatch et MongoDeleteBatch.
MongoWriteBatch vous permet de mettre en lot plusieurs opérations (du même type) et de les envoyer dans le même temps à MongoDB. Ceci est tout particulièrement utile lorsqu'on travaille sur plusieurs documents en même temps, réduisant ainsi les étapes.
Avant la version 1.5.0 du driver, il était possible d'utiliser la méthode MongoCollection::batchInsert(), cependant, depuis la version 1.5.0, cette méthode n'est plus recommandée.
Note : Cette classe n'est disponible que lorsqu'on travaille avec des serveurs MongoDB 2.6.0 (et supérieurs). Elle lancera une exception MongoProtocolException si vous tentez de l'utiliser avec des serveurs MongoDB plus anciens.
Synopsis de la classe
$collection
[, string $batch_type
[, array $write_options
]] )Type de MongoWriteBatch
MongoWriteBatch::COMMAND_INSERT-
Crée un lot d'écritures d'insertion
MongoWriteBatch::COMMAND_UPDATE-
Crée un lot d'écritures de mise à jour
MongoWriteBatch::COMMAND_DELETE-
Crée un lot d'écritures d'effacement
Description
Lors de l'exécution d'un lot, en appelant la méthode MongoWriteBatch::execute(), MongoWriteBatch va envoyer » maxWriteBatchSize (par défaut, 1000) documents ou jusqu'à » maxBsonObjectSize (par défaut, 16777216 octets), celui qui arrive en premier.
Note:
Les documents ne seront jamais partiellement envoyés. Lors de l'ajout de documents dans le lot, qui dépassent la limite, un nouveau lot sera créé et le document sera ajouté à ce nouveau lot.
Erreurs / Exceptions
- Lance une exception Exception lors d'un échec d'analyse des paramètres
- Lance une exception Exception lors d'erreurs de validation des arguments (i.e., clés manquantes)
- Lance une exception MongoProtocolException lors d'une communication avec un serveur MongoDB plus ancien que la version 2.6.0.
- Lance une exception MongoProtocolException lors d'erreurs du socket.
- Lance une exception MongoWriteConcernException lors d'un échec d'écriture à cause des préoccupations d'écriture
Exemples
Exemple #1 Exemple avec MongoWriteBatch
Ajout de documents dans un lot d'insertion, et l'exécute
<?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);
}
$retval = $batch->execute(array("w" => 1));
var_dump($retval);
?>
L'exemple ci-dessus va afficher :
array(2) {
["nInserted"]=>
int(3)
["ok"]=>
bool(true)
}
Sommaire
- MongoWriteBatch::add — Ajoute une opération d'écriture dans un lot
- MongoWriteBatch::__construct — Crée un nouveau lot d'opérations d'écriture
- MongoWriteBatch::execute — Exécute un lot d'opérations d'écriture