Php/docs/mongodb-driver-manager.executebulkwrite

来自菜鸟教程
跳转至:导航、​搜索

MongoDB\Driver\Manager::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeBulkWriteExecute one or more write operations


说明

final public MongoDB\Driver\Manager::executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, array $options = array() ] ) : MongoDB\Driver\WriteResult

Executes one or more write operations on the primary server.

A MongoDB\Driver\BulkWrite can be constructed with one or more write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send operations of the same type to the server in as few requests as possible to optimize round trips.


参数

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

bulk (MongoDB\Driver\BulkWrite)

The write(s) to execute.

options
{| |+ options ! Option ! Type ! Description |- | session | MongoDB\Driver\Session |

A session to associate with the operation.

|- | writeConcern | MongoDB\Driver\WriteConcern

|

A write concern to apply to the operation.

|}


返回值

Returns MongoDB\Driver\WriteResult on success.


错误/异常


更新日志

版本 说明
PECL mongodb 1.4.4 MongoDB\Driver\Exception\InvalidArgumentException

will be thrown if the "session" option is used in combination with an unacknowledged write concern.

PECL mongodb 1.4.0 The third parameter is now an options array.

For backwards compatibility, this paramater will still accept a MongoDB\Driver\WriteConcern object.

PECL mongodb 1.3.0 MongoDB\Driver\Exception\InvalidArgumentException

is now thrown if bulk does not contain any write operations. Previously, a MongoDB\Driver\Exception\BulkWriteException was thrown.


范例

Example #1 MongoDB\Driver\Manager::executeBulkWrite() example

<?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);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());}?>

以上例程的输出类似于:


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)