Créer un nouveau BulkWrite

# MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__construct — Créer un nouveau BulkWrite

### Description

public function MongoDB\Driver\BulkWrite::__construct(?array `$options` = `null`)

Construit un nouveau MongoDB\Driver\BulkWrite, qui est un objet mutable auquel une ou plusieurs opérations d'écriture peuvent être ajoutées. Les écritures peuvent ensuite être exécutées avec MongoDB\Driver\Manager::executeBulkWrite().

### Liste de paramètres

`options` (array)

  options
  Option | Type | Description | Défaut
  --- | --- | --- | ---
  bypassDocumentValidation | bool | Si `true`, permet aux opérations d'insertion et de mise à jour de contourner la validation au niveau du document. Cette option est disponible dans MongoDB 3.2+ et est ignorée pour les anciennes versions du serveur, qui ne prennent pas en charge la validation au niveau du document. | `false`
  comment | mixed | Un commentaire arbitraire pour aider à tracer l'opération à travers le profil du serveur de base de données, la sortie currentOp et les journaux. Cette option est disponible dans MongoDB 4.4+ et entraînera une exception au moment de l'exécution si elle est spécifiée pour une version de serveur plus ancienne.
  let | array|object | Dictionnaire des noms et des valeurs des paramètres. Les valeurs doivent être des constantes ou des expressions fermées qui ne font pas référence aux champs du document. Les paramètres peuvent ensuite être accédés en tant que variables dans un contexte d'expression agrégée (par exemple `$$var`). Cette option est disponible dans MongoDB 5.0+ et entraînera une exception au moment de l'exécution si elle est spécifiée pour une version antérieure du serveur.
  ordered | bool | Les opérations ordonnées (`true`) sont exécutées séquentiellement sur le serveur MongoDB, tandis que les opérations non ordonnées (`false`) sont envoyées au serveur dans un ordre arbitraire et peuvent être exécutées en parallèle. | `true`

### Erreurs / Exceptions

- Lance une exception MongoDB\Driver\InvalidArgumentException lors d'une erreur survenue pendant l'analyse d'un argument.

### Historique

Version | Description
--- | ---
PECL mongodb 1.14.0 | Ajout des options `"comment"` et `"let"`.
PECL mongodb 1.1.0 | Ajout de l'option `"bypassDocumentValidation"`.

### Exemples

Exemple #1 Exemple de MongoDB\Driver\BulkWrite::__construct()

    <?php

    $bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
    $bulk->delete([]);
    $bulk->insert(['_id' => 1, 'x' => 1]);
    $bulk->insert(['_id' => 2, 'x' => 2]);
    $bulk->update(
        ['x' => 2],
        ['$set' => ['x' => 1]],
        ['limit' => 1, 'upsert' => false]
    );
    $bulk->delete(['x' => 1], ['limit' => 1]);
    $bulk->update(
        ['_id' => 3],
        ['$set' => ['x' => 3]],
        ['limit' => 1, 'upsert' => true]
    );

    $manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
    $writeConcern = new MongoDB\Driver\WriteConcern(1);

    try {
        $result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
    } catch (MongoDB\Driver\Exception\BulkWriteException $e) {
        $result = $e->getWriteResult();

        // Vérifie si l'écriture n'a pas pu être effectuée
        if ($writeConcernError = $result->getWriteConcernError()) {
            printf("%s (%d): %s\n",
                $writeConcernError->getMessage(),
                $writeConcernError->getCode(),
                var_export($writeConcernError->getInfo(), true)
            );
        }

        // Vérifie si certaines opérations d'écriture n'ont pas été effectuées du tout
        foreach ($result->getWriteErrors() as $writeError) {
            printf("Operation#%d: %s (%d)\n",
                $writeError->getIndex(),
                $writeError->getMessage(),
                $writeError->getCode()
            );
        }
    } catch (MongoDB\Driver\Exception\Exception $e) {
        printf("Other error: %s\n", $e->getMessage());
        exit;
    }

    printf("Inserted %d document(s)\n", $result->getInsertedCount());
    printf("Updated  %d document(s)\n", $result->getModifiedCount());
    printf("Upserted %d document(s)\n", $result->getUpsertedCount());
    printf("Deleted  %d document(s)\n", $result->getDeletedCount());

    ?>

L'exemple ci-dessus va afficher :

    Inserted 2 document(s)
    Updated  1 document(s)
    Upserted 1 document(s)
    Deleted  1 document(s)

### Voir aussi

- MongoDB\Driver\Manager::executeBulkWrite() - Exécute une ou plusieurs opérations d'écriture
- MongoDB\Driver\WriteResult

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