MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__constructCrear un nuevo BulkWrite

Descripción

public 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 escrituras pueden ser ejecutadas posteriormente con MongoDB\Driver\Manager::executeBulkWrite().

Parámetros

options (array)
options
Option Type Description Defaut
bypassDocumentValidation bool

Si true, permite que las operaciones de inserción y actualización contorneen la validación a nivel de documento.

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

Map of parameter names and values. Values must be constant or closed expressions that do not reference document fields. Parameters can then be accessed as variables in an aggregate expression context (e.g. $$var).

This option is available in MongoDB 5.0+ and will result in an exception at execution time if specified for an older server version.

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

Errores/Excepciones

Historial de cambios

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".

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();

// 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 resultado del ejemplo sería:

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

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top