(mongodb >=2.1.0)
MongoDB\Driver\BulkWriteCommand::__construct — Crear una nueva BulkWriteCommand
Construye una nueva MongoDB\Driver\BulkWriteCommand, que puede ser utilizada para realizar múltiples operaciones de inserción, actualización y eliminación en varias colecciones en una sola petición utilizando el comando » bulkWrite introducido en MongoDB 8.0. Esto difiere de MongoDB\Driver\BulkWrite, que es compatible con todas las versiones del servidor pero limitado a una sola colección.
Después de que todas las operaciones de escritura hayan sido añadidas, este objeto puede ser ejecutado con MongoDB\Driver\Manager::executeBulkWriteCommand().
options
(array)
Opción | Tipo | Descripción | Por omisión |
---|---|---|---|
bypassDocumentValidation | bool |
Si |
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. |
|
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. 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 |
Si las operaciones en esta escritura masiva deben ser ejecutadas en el
orden en que fueron especificadas. Si |
true |
verboseResults | bool |
Si los detalles de los resultados de cada operación exitosa deben ser incluidos en el resultado en la MongoDB\Driver\BulkWriteCommandResult retornada. |
false |
Ejemplo #1 Ejemplo de MongoDB\Driver\BulkWriteCommand::__construct()
<?php
$manager = new MongoDB\Driver\Manager;
$bulk = new MongoDB\Driver\BulkWriteCommand;
// Elimina los documentos de dos colecciones
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);
// Añade los documentos a dos colecciones
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);
// Modifica un documento en "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);
$result = $manager->executeBulkWriteCommand($bulk);
printf("%d documento(s) han sido insertado(s)\n", $result->getInsertedCount());
printf("%d documento(s) han sido actualizado(s)\n", $result->getModifiedCount());
?>
El resultado del ejemplo sería:
3 documento(s) han sido insertado(s) 1 documento(s) han sido actualizado(s)