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

MongoWriteBatch {
/* Constantes */
const int COMMAND_INSERT = 1 ;
const int COMMAND_UPDATE = 2 ;
const int COMMAND_DELETE = 3 ;
/* Méthodes */
protected __construct ( MongoCollection $collection [, string $batch_type [, array $write_options ]] )
public add ( array $item ) : bool
final public execute ( array $write_options ) : array
}

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

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