Exécute les opérations d'écriture en utilisant la commande bulkWrite

# MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

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

### Description

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

Exécute une ou 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"`), suivie de l'URI 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. Les objets MongoDB\Driver\BulkWriteCommand 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érations d'écriture mixtes

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open