(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeBulkWrite — Ejecuta una o varias operaciones de escritura
$namespace
, MongoDB\Driver\BulkWrite $bulk
, ?array $options
= null
): MongoDB\Driver\WriteResultEjecuta una o varias operaciones de escritura en el servidor primario.
Un MongoDB\Driver\BulkWrite puede ser construido con una o varias operaciones de escritura de tipos variados (por ejemplo, actualizaciones, eliminaciones e inserciones). El controlador intentará enviar las operaciones del mismo tipo al servidor en el menor número de solicitudes posible para optimizar los intercambios.
El valor por omisión de la opción "writeConcern"
será
deducido a partir de una transacción activa (indicada por la opción
"session"
), seguida de la
URI de conexión.
namespace
(string)
Un espacio de nombres completamente cualificado (p. ej. "nombreBaseDatos.nombreColección"
).
bulk
(MongoDB\Driver\BulkWrite)La/s escritura/s a ejecutar.
options
Option | Type | Description |
---|---|---|
session | MongoDB\Driver\Session |
Una sesión a asociar con la operación. |
writeConcern | MongoDB\Driver\WriteConcern |
Un asunto de escritura a aplicar a la operación. |
Devuelve un MongoDB\Driver\WriteResult en caso de éxito.
bulk
no contiene ninguna operación de escritura.bulk
ya ha sido ejecutado. Los objetos MongoDB\Driver\BulkWrite no pueden ser ejecutados varias veces."session"
se usa junto a un asunto de escritura no reconocido.
Versión | Descripción |
---|---|
PECL mongodb 2.0.0 |
El parámetro options ya no acepta
una instancia de MongoDB\Driver\WriteConcern.
|
PECL mongodb 1.21.0 |
Pasar un objeto MongoDB\Driver\WriteConcern como
options está obsoleto y será eliminado en la versión 2.0.
|
PECL mongodb 1.4.4 |
Se lanzará una MongoDB\Driver\Exception\InvalidArgumentException
si la opción "session" se utiliza en combinación con un
"writeConcern" no-acknowledged.
|
PECL mongodb 1.4.0 |
El tercer parámetro es ahora un array de options .
Por razones de compatibilidad ascendente, este parámetro siempre aceptará
un objeto MongoDB\Driver\WriteConcern.
|
PECL mongodb 1.3.0 |
Se lanza una MongoDB\Driver\Exception\InvalidArgumentException
si bulk no contiene ninguna operación de escritura. Anteriormente,
se lanzaba una MongoDB\Driver\Exception\BulkWriteException.
|
Ejemplo #1 Ejemplo de MongoDB\Driver\Manager::executeBulkWrite()
<?php
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);
$bulk->update(['x' => 2], ['$set' => ['x' => 1]], ['multi' => false, 'upsert' => false]);
$bulk->update(['x' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);
$bulk->update(['_id' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);
$bulk->insert(['_id' => 4, 'x' => 2]);
$bulk->delete(['x' => 1], ['limit' => 1]);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
$result = $manager->executeBulkWrite('db.collection', $bulk, ['writeConcern' => $writeConcern]);
printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Matched %d document(s)\n", $result->getMatchedCount());
printf("Updated %d document(s)\n", $result->getModifiedCount());
printf("Upserted %d document(s)\n", $result->getUpsertedCount());
printf("Deleted %d document(s)\n", $result->getDeletedCount());
foreach ($result->getUpsertedIds() as $index => $id) {
printf('upsertedId[%d]: ', $index);
var_dump($id);
}
/* Si el WriteConcern no ha podido ser satisfecho */
if ($writeConcernError = $result->getWriteConcernError()) {
printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}
/* Si una escritura no ha podido hacerse en absoluto */
foreach ($result->getWriteErrors() as $writeError) {
printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
}
?>
El resultado del ejemplo sería algo similar a:
Inserted 3 document(s) Matched 1 document(s) Updated 1 document(s) Upserted 2 document(s) Deleted 1 document(s) upsertedId[3]: object(MongoDB\BSON\ObjectId)#5 (1) { ["oid"]=> string(24) "54d3adc3ce7a792f4d703756" } upsertedId[4]: int(3)