Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mongodbdriverbulkwrite(3) [php man page]

MONGODBDRIVERBULKWRITE(3)						 1						 MONGODBDRIVERBULKWRITE(3)

The MongoDBDriverBulkWrite class

INTRODUCTION
The MongoDBDriverBulkWrite collects one ore more write operations that should be sent to the server in writees. The MongoDBDriverManager has 3 wrapper methods for single-item writees for simplicity: o MongoDBDriverManager::executeInsert o MongoDBDriverManager::executeDelete o MongoDBDriverManager::executeUpdate along with the main method to execute a write: MongoDBDriverManager::executeBulkWrite When constructing a write, you must define if the write should be executed in order (default), or if it can be reordered by the server. Ordered write write operations are sent to the server, in the order provided, for serial execution. If a write fails, any remaining opera- tions will be aborted. Unordered operations are sent to the server in arbitrary order where they may be executed in parallel. Any errors that occur are reported after all operations have been attempted. CLASS SYNOPSIS
MongoDB0 final MongoDB0ntable Methods o public MongoDBDriverBulkWrite::__construct ([boolean $ordered = true]) o public int MongoDBDriverBulkWrite::count (void ) o public void MongoDBDriverBulkWrite::delete (array|object $filter, [array $deleteOptions]) o public MongoDBDriverObjectID MongoDBDriverBulkWrite::insert (array|object $document) o public void MongoDBDriverBulkWrite::update (array|object $filter, array|object $newObj, [array $updateOptions]) EXAMPLES
Example #1 Mixed write operations sent in groupped writees Mixing write operations (insert/update/delete) will create internal sub-writees and will be sent sequentially to the server. <?php $write = new MongoDBDriverBulkWrite(true); $write->insert($a); $write->update($b, $obj); $write->update($c, $obj); $write->insert($d); $write->insert($e); $write->delete($f); ?> Will result in 4 writes (round-trips) being executed. Example #2 Ordered BulkWrite causing error <?php $write = new MongoDBDriverBulkWrite(false); $write->delete([]); $write->insert(["_id" => 1]); $write->insert(["_id" => 2]); $write->insert(["_id" => 3, "hello" => "world"]); $write->update(["_id" => 3], ['$set' => ["hello" => "earth"]]); $write->insert(["_id" => 4, "hello" => "pluto"]); $write->update(["_id" => 4], ['$set' => ["hello" => "moon"]]); $write->insert(["_id" => 3]); $write->insert(["_id" => 4]); $write->insert(["_id" => 5]); $manager = new MongoDBDriverManager("mongodb://localhost:27017"); $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000); try { $result = $manager->executeBulkWrite("databaseName.collectionName", $write, $writeConcern); } catch(MongoDBDriverDuplicateKeyException $ex) { $result = $ex->getWriteResult(); printf("Inserted %d document(s) ", $result->getInsertedCount()); printf("Updated %d document(s) ", $result->getModifiedCount()); /* If the WriteConcern could not be fullfilled */ if ($writeConcernError = $result->getWriteConcernError()) { printf("%s (%d): %s ", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true) ); } /* If the write could not happen at all */ foreach ($result->getWriteErrors() as $writeError) { printf("Operation#%d: %s (%d) ", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode() ); } } catch(MongoDBDriverAuthenticationException $ex) { } catch(MongoDBDriverConnectionException $ex) { } catch(MongoDBDriverRuntimeException $ex) { } ?> The above example will output: Inserted 4 document(s) Updated 2 document(s) Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000) If the WriteConcern could not be fullfilled, the example above would output something like: Inserted 4 document(s) Updated 2 document(s) waiting for replication timed out (64): array ( 'wtimeout' => true, ) Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000) Executing the same example, changing the order to false: <?php $write = new MongoDBDriverBulkWrite(false); /* ... */ ?> The above example will output: Inserted 5 document(s) Updated 2 document(s) Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000) Operation#8: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 4 } (11000) SEE ALSO
o MongoDBDriverManager::executeBulkWrite oMongoDBDriverWriteResult oMongoDBDriverWriteConcern oMongoDBDriverWriteConcernError oMongoDBDriverWriteError PHP Documentation Group MONGODBDRIVERBULKWRITE(3)
Man Page