Crea un nuevo BulkWrite

# MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__construct — Crea un nuevo BulkWrite

### Descripción

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

Construye un nuevo MongoDB\Driver\BulkWrite, que es un objeto mutable al cual se pueden añadir una o más operaciones de escritura. Las escritura(s) pueden entonces ser ejecutadas con MongoDB\Driver\Manager::executeBulkWrite().

### Parámetros

`options` (array)

  options
  Opción | Tipo | Descripción | Valor por omisión
  --- | --- | --- | ---
  bypassDocumentValidation | bool | Si es `true`, permite que las operaciones de inserción y actualización eviten la validación a nivel de documento. Esta opción está disponible en MongoDB 3.2+ y es ignorada en versiones anteriores del servidor, que no soportan validación a nivel de documento. | `false`
  comment | mixed | Un comentario arbitrario para ayudar a rastrear la operación a través del perfilador de la base de datos, la salida currentOp y los registros. Esta opción está disponible en MongoDB 4.4+ y generará una excepción en tiempo de ejecución si se especifica para una versión anterior del servidor.
  let | array|object | Diccionario de nombres y valores de parámetros. Los valores deben ser constantes o expresiones cerradas que no hagan referencia a campos del documento. Los parámetros pueden ser accedidos luego como variables en un contexto de expresión agregada (por ejemplo `$$var`). Esta opción está disponible en MongoDB 5.0+ y resultará en una excepción en tiempo de ejecución si es especificada para una versión anterior del servidor.
  ordered | bool | Las operaciones ordenadas (`true`) se ejecutan de forma serial en el servidor de MongoDB, mientras que las operaciones no ordenadas (`false`) son enviadas al servidor en un orden arbitrario y pueden ser ejecutadas en paralelo. | `true`

### Errores/Excepciones

- Lanza una excepción MongoDB\Driver\InvalidArgumentException en caso de error durante el análisis de un argumento.

### Historial de cambios

Versión | Descripción
--- | ---
PECL mongodb 1.14.0 | Se añadieron las opciones `"comment"` y `"let"`.
PECL mongodb 1.1.0 | Se añadió la opción `"bypassDocumentValidation"`.

### Ejemplos

Ejemplo #1 Ejemplo 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();

        // Comprobar si la preocupación de escritura no pudo ser cumplida
        if ($writeConcernError = $result->getWriteConcernError()) {
            printf("%s (%d): %s\n",
                $writeConcernError->getMessage(),
                $writeConcernError->getCode(),
                var_export($writeConcernError->getInfo(), true)
            );
        }

        // Comprobar si alguna operación de escritura no se completó en absoluto
        foreach ($result->getWriteErrors() as $writeError) {
            printf("Operación#%d: %s (%d)\n",
                $writeError->getIndex(),
                $writeError->getMessage(),
                $writeError->getCode()
            );
        }
    } catch (MongoDB\Driver\Exception\Exception $e) {
        printf("Otro error: %s\n", $e->getMessage());
        exit;
    }

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

    ?>

El ejemplo anterior mostrará:

    Insertados 2 documento(s)
    Actualizados  1 documento(s)
    Incluidos 1 documento(s)
    Eliminados  1 documento(s)

### Ver también

- MongoDB\Driver\Manager::executeBulkWrite() - Ejecuta una o varias operaciones de escritura
- MongoDB\Driver\WriteResult

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