MongoDB\Driver\Manager::executeBulkWrite
(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeBulkWrite — Execute 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)完全修飾形式の名前空間 (
"databaseName.collectionName"
)。bulk
(MongoDB\Driver\BulkWrite)実行する書き込み。
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.
|}
エラー / 例外
- Throws MongoDB\Driver\Exception\InvalidArgumentException if
bulk
does not contain any write operations. - Throws MongoDB\Driver\Exception\InvalidArgumentException if
bulk
has already been executed. MongoDB\Driver\BulkWrite objects may not be executed multiple times. - Throws MongoDB\Driver\Exception\InvalidArgumentException if the
"session"
option is used in combination with an unacknowledged write concern. - 引数のパースに失敗した場合に MongoDB\Driver\Exception\InvalidArgumentException をスローします。
- サーバーへの接続が認証以外の理由で失敗した場合に MongoDB\Driver\Exception\ConnectionException をスローします。
- 認証が必要な場面で認証に失敗した場合に MongoDB\Driver\Exception\AuthenticationException をスローします。
- 書き込みが失敗した場合 (書き込み先の適用に失敗した場合など) に MongoDB\Driver\Exception\BulkWriteException をスローします。
- Throws MongoDB\Driver\Exception\RuntimeException on other errors.
変更履歴
バージョン | 説明 |
---|---|
PECL mongodb 1.4.4 | MongoDB\Driver\Exception\InvalidArgumentException
will be thrown if the |
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 |
例
例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)
参考
- MongoDB\Driver\BulkWrite
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWrite() - Execute one or more write operations on this server