(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::__construct — Crea 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 escritura(s) pueden entonces ser ejecutadas con MongoDB\Driver\Manager::executeBulkWrite().
options (array)
| 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 |
| 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".
|
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)