(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::__construct — Crear un nuevo BulkWrite
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 escrituras pueden ser ejecutadas posteriormente con MongoDB\Driver\Manager::executeBulkWrite().
options (array)
| Option | Type | Description | Defaut | 
|---|---|---|---|
| bypassDocumentValidation | bool | 
            Si  Esta opción está disponible en MongoDB 3.2+ y es ignorada para las versiones anteriores del servidor, que no soportan la validación a nivel de documento. | false | 
| comment | mixed | Un comentario arbitrario para ayudar a trazar la operación a través del perfil del servidor de base de datos, la salida currentOp y los registros. Esta opción está disponible en MongoDB 4.4+ y lanzará una excepción en el momento de la ejecución si se especifica para una versión de servidor más antigua. | |
| 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  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) son ejecutadas secuencialmente en el servidor MongoDB,
           mientras que las operaciones no ordenadas (false) son enviadas al servidor
           en un orden arbitrario y pueden ser ejecutadas en paralelo. | true | 
| Versión | Descripción | 
|---|---|
| PECL mongodb 1.14.0 | Adición de las opciones "comment"y"let". | 
| PECL mongodb 1.1.0 | Adición de la opción "bypassDocumentValidation". | 
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();
    // Verifica si la escritura no pudo ser realizada
    if ($writeConcernError = $result->getWriteConcernError()) {
        printf("%s (%d): %s\n",
            $writeConcernError->getMessage(),
            $writeConcernError->getCode(),
            var_export($writeConcernError->getInfo(), true)
        );
    }
    // Verifica si algunas operaciones de escritura no fueron realizadas
    foreach ($result->getWriteErrors() as $writeError) {
        printf("Operation#%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("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());
?>El ejemplo anterior mostrará:
Inserted 2 document(s) Updated 1 document(s) Upserted 1 document(s) Deleted 1 document(s)
