# MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Manager::executeBulkWriteCommand — Execute les opérations d'écriture en utilisant la commande bulkWrite

### Description

final public MongoDB\Driver\Manager::executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand `$bulk`, ?array `$options` = `null`): MongoDB\Driver\BulkWriteCommandResult

Exécute une pour plusieurs opérations d'écriture sur le serveur principal en utilisant la commande » bulkWrite introduite dans MongoDB 8.0.

Une MongoDB\Driver\BulkWriteCommand peut être construite avec une ou plusieurs opérations d'écriture de types variés (par exemple, des insertions, des mises à jour et des suppressions). Chaque opération d'écriture peut cibler une différente collection.

La valeur par défaut pour l'option `"writeConcern"` sera déduite d'une transaction active (indiquée par l'option `"session"`), suivit par l'uURI de connexion.

### Liste de paramètres

`bulk` (MongoDB\Driver\BulkWriteCommand)

  Écriture(s) à exécuter.

`options`

  options
  Option | Type | Description
  --- | --- | ---
  session | MongoDB\Driver\Session | Une session à associer à l'opération.
  writeConcern | MongoDB\Driver\WriteConcern | Une préoccupation d'écriture à appliquer à l'opération.

### Valeurs de retour

Retourne un MongoDB\Driver\BulkWriteCommandResult en cas de succès.

### Erreurs / Exceptions

- Lance une MongoDB\Driver\Exception\InvalidArgumentException si `bulk` ne contient pas d'opérations d'écriture valides.
- Lance une MongoDB\Driver\Exception\InvalidArgumentException si `bulk` a déjà été exécutée. MongoDB\Driver\BulkWriteCommand les objets ne peuvent pas être exécutés plusieurs fois.
- Lance une exception MongoDB\Driver\Exception\InvalidArgumentException si l'option `"session"` est utilisée conjointement avec une préoccupation d'écriture non reconnu.
- Lance une exception MongoDB\Driver\AuthenticationException si une identification est nécessaire mais qu'elle échoue
- Lance une exception MongoDB\Driver\ConnectionException si la connexion au serveur échoue pour une autre raison qu'en raison d'un problème d'identification
- Lance une exception MongoDB\Driver\Exception\BulkWriteCommandException lors d'une erreur d'écriture (par exemple, échec de commande, erreur d'écriture ou d'écriture préoccupante)
- Lance MongoDB\Driver\Exception\RuntimeException en cas d'autre erreur.

### Exemples

Exemple #1 Opération d'écriture mixées

Les opérations d'écriture mixées (par exemple, insertion, mise à jour et suppression) seront envoyées au serveur en utilisant une seule commande » bulkWrite

`<?php
$manager = new MongoDB\Driver\Manager;
$bulk = new MongoDB\Driver\BulkWriteCommand;
// Supprime les documents des deux collections
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);
// Ajoute les documents des deux collections
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);
// Met à jour un document dans "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);
$result = $manager->executeBulkWriteCommand($bulk);
printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Updated %d document(s)\n", $result->getModifiedCount());
?>`

L'exemple ci-dessus va afficher :

    Inserted 3 document(s)
    Updated  1 document(s)

Exemple #2 Opération d'écriture ordonnée qui provoque une erreur

`<?php
$manager = new MongoDB\Driver\Manager;
$bulk = new MongoDB\Driver\BulkWriteCommand;
$bulk->deleteMany('db.coll', []);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 2]);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 3]);
try {
$result = $manager->executeBulkWriteCommand($bulk);
} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
$result = $e->getPartialResult();
var_dump($e->getWriteErrors());
}
printf("Inserted %d document(s)\n", $result->getInsertedCount());
?>`

Résultat de l'exemple ci-dessus est similaire à :

    array(1) {
      [3]=>
      object(MongoDB\Driver\WriteError)#5 (4) {
        ["message"]=>
        string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
        ["code"]=>
        int(11000)
        ["index"]=>
        int(3)
        ["info"]=>
        object(stdClass)#6 (0) {
        }
      }
    }
    Inserted 2 document(s)

### Voir aussi

- MongoDB\Driver\BulkWriteCommand
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWriteCommand() - Exécute des opérations d'écriture sur ce serveur en utilisant la commande bulkWrite