Ejecuta operaciones de escritura utilizando el comando bulkWrite

# MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Manager::executeBulkWriteCommand — Ejecuta operaciones de escritura utilizando el comando bulkWrite

### Descripción

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

Ejecuta una o varias operaciones de escritura en el servidor primario utilizando el comando » bulkWrite introducido en MongoDB 8.0.

Una MongoDB\Driver\BulkWriteCommand puede ser construida con una o varias operaciones de escritura de tipos variados (por ejemplo, inserciones, actualizaciones y eliminaciones). Cada operación de escritura puede apuntar a una colección diferente.

El valor por omisión para la opción `"writeConcern"` será deducido de una transacción activa (indicada por la opción `"session"`), seguida por la URI de conexión.

### Parámetros

`bulk` (MongoDB\Driver\BulkWriteCommand)
  Escritura(s) a ejecutar.
`options`

  options
  Opción | Tipo | Descripción
  --- | --- | ---
  session | MongoDB\Driver\Session | Una sesión a asociar a la operación.
  writeConcern | MongoDB\Driver\WriteConcern | Una preocupación de escritura a aplicar a la operación.

### Valores devueltos

Retorna un MongoDB\Driver\BulkWriteCommandResult en caso de éxito.

### Errores/Excepciones

- Lanza una MongoDB\Driver\Exception\InvalidArgumentException si `bulk` no contiene operaciones de escritura válidas.
- Lanza una MongoDB\Driver\Exception\InvalidArgumentException si `bulk` ya ha sido ejecutada. Los objetos MongoDB\Driver\BulkWriteCommand no pueden ser ejecutados múltiples veces.
- Lanza una excepción MongoDB\Driver\Exception\InvalidArgumentException si la opción `"session"` se utiliza junto con una preocupación de escritura no reconocida.
- Lanza una excepción MongoDB\Driver\InvalidArgumentException en caso de error durante el análisis de un argumento.
- Lanza una excepción MongoDB\Driver\ConnectionException si la conexión al servidor falla por una razón distinta a un problema de identificación
- Lanza una excepción MongoDB\Driver\AuthenticationException si se requiere una identificación pero falla
- Lanza una excepción MongoDB\Driver\Exception\BulkWriteCommandException en caso de error de escritura (por ejemplo, fallo de comando, error de escritura o preocupación de escritura)
- Lanza MongoDB\Driver\Exception\RuntimeException en caso de otro error.

### Ejemplos

Ejemplo #1 Operaciones de escritura mixtas

Las operaciones de escritura mixtas (por ejemplo, inserción, actualización y eliminación) serán enviadas al servidor utilizando una sola comando » bulkWrite

    <?php

    $manager = new MongoDB\Driver\Manager;

    $bulk = new MongoDB\Driver\BulkWriteCommand;

    // Elimina documentos de dos colecciones
    $bulk->deleteMany('db.coll_one', []);
    $bulk->deleteMany('db.coll_two', []);

    // Añade documentos a dos colecciones
    $bulk->insertOne('db.coll_one', ['_id' => 1]);
    $bulk->insertOne('db.coll_two', ['_id' => 2]);
    $bulk->insertOne('db.coll_two', ['_id' => 3]);

    // Actualiza un documento en "coll_one"
    $bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

    $result = $manager->executeBulkWriteCommand($bulk);

    printf("Insertados %d documento(s)\n", $result->getInsertedCount());
    printf("Actualizados %d documento(s)\n", $result->getModifiedCount());

    ?>

El ejemplo anterior mostrará:

    Insertados 3 documento(s)
    Actualizados 1 documento(s)

Ejemplo #2 Operación de escritura ordenada que provoca un error

    <?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("Insertados %d documento(s)\n", $result->getInsertedCount());

    ?>

Resultado del ejemplo anterior es similar a:

    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) {
        }
      }
    }
    Insertados 2 documento(s)

### Ver también

- MongoDB\Driver\BulkWriteCommand
- MongoDB\Driver\BulkWriteCommandResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWriteCommand() - Ejecuta operaciones de escritura en este servidor utilizando el comando bulkWrite

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