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
]] )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
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.mongowritebatch.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.