(mongodb >=0.2.0)
MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations
$namespace
, MongoDB\Driver\BulkWrite $bulk
[, MongoDB\Driver\WriteConcern $writeConcern
] )Executes one or more write operations.
A MongoDB\Driver\BulkWrite can be constructed with multiple write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send similarly type operations to the server at the same time to optimize round trips.
namespace
Un espacio de nombres completamente cualificado (nombreBaseDatos.nombreColección)
bulk
The MongoDB\Driver\BulkWrite to execute.
writeConcern
Opcionalmente, un MongoDB\Driver\WriteConcern. Si no se proporciona, se empleará el valor del Asunto de escritura establecido por el URI de conexión de MongoDB.
Returns MongoDB\Driver\WriteResult on success, lanza una excepción (instanceof MongoDB\Driver\Exception) en caso de fallo.
Ejemplo #1 MongoDB\Driver\Manager::executeBulkWrite() example
<?php
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert(array("_id" => 1, "x" => 1));
$bulk->insert(array("_id" => 2, "x" => 2));
$bulk->update(array( "x" => 2), array('$set' => array("x" => 1)), array("multi" => false, "upsert" => false));
$bulk->update(array( "x" => 3), array('$set' => array("x" => 3)), array("multi" => false, "upsert" => true));
$bulk->update(array("_id" => 3), array('$set' => array("x" => 3)), array("multi" => false, "upsert" => true));
$bulk->insert(array("_id" => 4, "x" => 2));
$bulk->delete(array("x" => 1), array("limit" => 1));
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
$result = $manager->executeBulkWrite("databaseName.collectionName", $bulk, $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);
}
/* If the WriteConcern could not be fulfilled */
if ($writeConcernError = $result->getWriteConcernError()) {
printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}
/* If a write could not happen at all */
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(BSON\ObjectID)#5 (1) { ["oid"]=> string(24) "54d3adc3ce7a792f4d703756" } upsertedId[4]: int(3)