Php/docs/mongodb-driver-bulkwrite.construct
MongoDB\Driver\BulkWrite::__construct
(mongodb >=1.0.0)
MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite
说明
public MongoDB\Driver\BulkWrite::__construct
([ array $options
] )
Constructs a new MongoDB\Driver\BulkWrite, which is a mutable object to which one or more write operations may be added. The write(s) may then be executed with MongoDB\Driver\Manager::executeBulkWrite().
参数
options
(array)- {|
|+ options
!width="25%"| Option
!width="25%"| Type
!width="25%"| Description
!width="25%"| Default
|-
| bypassDocumentValidation
| bool
|
If
true
, allows insert and update operations to circumvent document level validation.This option is available in MongoDB 3.2+ and is ignored for older server versions, which do not support document level validation.
|
false
|- | ordered | bool | Ordered operations (true
) are executed serially on the MongoDB server, while unordered operations (false
) are sent to the server in an arbitrary order and may be executed in parallel. |true
|}
更新日志
版本 | 说明 |
---|---|
PECL mongodb 1.1.0 | Added the "bypassDocumentValidation" option.
|
范例
Example #1 MongoDB\Driver\BulkWrite::__construct() example
<?php$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);$bulk->delete([]);$bulk->insert(['_id' => 1, 'x' => 1]);$bulk->insert(['_id' => 2, 'x' => 2]);$bulk->update( ['x' => 2], ['$set' => ['x' => 1]], ['limit' => 1, 'upsert' => false]);$bulk->delete(['x' => 1], ['limit' => 1]);$bulk->update( ['_id' => 3], ['$set' => ['x' => 3]], ['limit' => 1, 'upsert' => true]);$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');$writeConcern = new MongoDB\Driver\WriteConcern(1);try { $result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);} catch (MongoDB\Driver\Exception\BulkWriteException $e) { $result = $e->getWriteResult(); // Check if the write concern could not be fulfilled if ($writeConcernError = $result->getWriteConcernError()) { printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true) ); } // Check if any write operations did not complete at all foreach ($result->getWriteErrors() as $writeError) { printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode() ); }} catch (MongoDB\Driver\Exception\Exception $e) { printf("Other error: %s\n", $e->getMessage()); exit;}printf("Inserted %d document(s)\n", $result->getInsertedCount());printf("Updated %d document(s)\n", $result->getModifiedCount());printf("Upserted %d document(s)\n", $result->getUpsertedCount());printf("Deleted %d document(s)\n", $result->getDeletedCount());?>
以上例程会输出:
Inserted 2 document(s) Updated 1 document(s) Upserted 1 document(s) Deleted 1 document(s)
参见
- MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
- MongoDB\Driver\WriteResult