(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.
namespaceUn espacio de nombres completamente cualificado (nombreBaseDatos.nombreColección)
bulkThe MongoDB\Driver\BulkWrite to execute.
writeConcernOpcionalmente, 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)