diff --git a/language-snippets.ent b/language-snippets.ent
index 7875a8bf785a..528089dd72ec 100644
--- a/language-snippets.ent
+++ b/language-snippets.ent
@@ -3372,6 +3372,16 @@ local: {
'>
+
+ bulk (MongoDB\Driver\BulkWriteCommand)
+
+
+ The write(s) to execute.
+
+
+
+'>
command (MongoDB\Driver\Command)
@@ -3586,14 +3596,17 @@ local: {
'>
Returns MongoDB\Driver\Cursor on success.'>
Returns MongoDB\Driver\WriteResult on success.'>
+Returns MongoDB\Driver\BulkWriteCommandResult on success.'>
Throws MongoDB\Driver\Exception\InvalidArgumentException if the "session" option is used with an associated transaction in combination with a "readConcern" or "writeConcern" option.'>
Throws MongoDB\Driver\Exception\InvalidArgumentException if the "session" option is used in combination with an unacknowledged write concern.'>
+Throws MongoDB\Driver\Exception\BulkWriteCommandException on any write failure (e.g. command failure, write or write concern error)'>
Throws MongoDB\Driver\Exception\BulkWriteException on any write failure (e.g. write error, failure to apply a write concern)'>
Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.'>
Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.'>
Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).'>
Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected libbson error.'>
+Throws MongoDB\Driver\Exception\LogicException if the write was not acknowledged.'>
diff --git a/reference/mongodb/exceptions.xml b/reference/mongodb/exceptions.xml
index a43cee4f64b1..a46847f1f283 100644
--- a/reference/mongodb/exceptions.xml
+++ b/reference/mongodb/exceptions.xml
@@ -7,6 +7,7 @@
&reference.mongodb.mongodb.driver.exception.authenticationexception;
&reference.mongodb.mongodb.driver.exception.bulkwriteexception;
+ &reference.mongodb.mongodb.driver.exception.bulkwritecommandexception;
&reference.mongodb.mongodb.driver.exception.commandexception;
&reference.mongodb.mongodb.driver.exception.connectionexception;
&reference.mongodb.mongodb.driver.exception.connectiontimeoutexception;
@@ -51,6 +52,7 @@
MongoDB\Driver\Exception\ServerException
+ MongoDB\Driver\Exception\BulkWriteCommandExceptionMongoDB\Driver\Exception\CommandExceptionMongoDB\Driver\Exception\ExecutionTimeoutException
diff --git a/reference/mongodb/mongodb.xml b/reference/mongodb/mongodb.xml
index 01a150305681..7aeae83349e0 100644
--- a/reference/mongodb/mongodb.xml
+++ b/reference/mongodb/mongodb.xml
@@ -10,6 +10,7 @@
&reference.mongodb.mongodb.driver.command;
&reference.mongodb.mongodb.driver.query;
&reference.mongodb.mongodb.driver.bulkwrite;
+ &reference.mongodb.mongodb.driver.bulkwritecommand;
&reference.mongodb.mongodb.driver.session;
&reference.mongodb.mongodb.driver.clientencryption;
&reference.mongodb.mongodb.driver.serverapi;
@@ -29,4 +30,5 @@
&reference.mongodb.mongodb.driver.writeconcernerror;
&reference.mongodb.mongodb.driver.writeerror;
&reference.mongodb.mongodb.driver.writeresult;
+ &reference.mongodb.mongodb.driver.bulkwritecommandresult;
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommand.xml b/reference/mongodb/mongodb/driver/bulkwritecommand.xml
new file mode 100644
index 000000000000..6190950932a7
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommand.xml
@@ -0,0 +1,202 @@
+
+
+
+
+
+ The MongoDB\Driver\BulkWriteCommand class
+ MongoDB\Driver\BulkWriteCommand
+
+
+
+
+
+ &reftitle.intro;
+
+ MongoDB\Driver\BulkWriteCommand collects one or more
+ write operations that should be sent to the server using the
+ bulkWrite
+ command introduced in MongoDB 8.0. After adding any number of insert,
+ update, and delete operations, the command may be executed via
+ MongoDB\Driver\Manager::executeBulkWriteCommand.
+
+
+ Unlike MongoDB\Driver\BulkWrite, where all write
+ operations must target the same collection, each write operation within
+ MongoDB\Driver\BulkWriteCommand may target a
+ different collection.
+
+
+ Write operations may either be ordered (default) or unordered. Ordered write
+ operations are sent to the server, in the order provided, for serial
+ execution. If a write fails, any remaining operations will be aborted.
+ Unordered operations are sent to the server in an arbitrary order
+ where they may be executed in parallel. Any errors that occur are reported
+ after all operations have been attempted.
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+ MongoDB\Driver\BulkWriteCommand
+
+
+
+ final
+
+ MongoDB\Driver\BulkWriteCommand
+
+
+
+ Countable
+
+
+
+
+ &Methods;
+
+
+
+
+
+
+
+ &reftitle.examples;
+
+
+ Mixed write operations
+
+ Mixed write operations (i.e. inserts, updates, and deletes) will be sent
+ to the server using a single
+ bulkWrite
+ command.
+
+
+deleteMany('db.coll_one', []);
+$bulk->deleteMany('db.coll_two', []);
+
+// Insert documents into two collections
+$bulk->insertOne('db.coll_one', ['_id' => 1]);
+$bulk->insertOne('db.coll_two', ['_id' => 2]);
+$bulk->insertOne('db.coll_two', ['_id' => 3]);
+
+// Update a document in "coll_one"
+$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+printf("Inserted %d document(s)\n", $result->getInsertedCount());
+printf("Updated %d document(s)\n", $result->getModifiedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ Ordered write operations causing an error
+
+deleteMany('db.coll', []);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$bulk->insertOne('db.coll', ['_id' => 2]);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$bulk->insertOne('db.coll', ['_id' => 3]);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ $result = $e->getPartialResult();
+
+ var_dump($e->getWriteErrors());
+}
+
+printf("Inserted %d document(s)\n", $result->getInsertedCount());
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ object(MongoDB\Driver\WriteError)#5 (4) {
+ ["message"]=>
+ string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
+ ["code"]=>
+ int(11000)
+ ["index"]=>
+ int(3)
+ ["info"]=>
+ object(stdClass)#6 (0) {
+ }
+ }
+}
+Inserted 2 document(s)
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\BulkWriteCommandResult
+ MongoDB\Driver\Exception\BulkWriteCommandException
+ MongoDB\Driver\WriteConcern
+ MongoDB\Driver\WriteConcernError
+ MongoDB\Driver\WriteError
+
+
+
+
+
+ &reference.mongodb.mongodb.driver.entities.bulkwritecommand;
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommand/construct.xml b/reference/mongodb/mongodb/driver/bulkwritecommand/construct.xml
new file mode 100644
index 000000000000..d5daf49b4286
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommand/construct.xml
@@ -0,0 +1,184 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommand::__construct
+ Create a new BulkWriteCommand
+
+
+
+ &reftitle.description;
+
+ publicMongoDB\Driver\BulkWriteCommand::__construct
+ arraynulloptions&null;
+
+
+ Constructs a new MongoDB\Driver\BulkWriteCommand,
+ which may be used to perform many insert, update, and delete operations on
+ multiple collections in a single request using the
+ bulkWrite
+ command introduced in MongoDB 8.0. This differs from
+ MongoDB\Driver\BulkWrite, which is supported by all
+ server versions but limited to a single collection.
+
+
+ After all write operations have been added, this object may be executed with
+ MongoDB\Driver\Manager::executeBulkWriteCommand.
+
+
+
+
+ &reftitle.parameters;
+
+
+ options (array)
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+
+ bypassDocumentValidation
+ bool
+
+
+ If &true;, allows insert and update operations to circumvent
+ document level validation.
+
+
+ &false;
+
+
+ comment
+ mixed
+
+
+ An arbitrary comment to help trace the operation through the
+ database profiler, currentOp output, and logs.
+
+
+
+ &mongodb.option.let;
+
+ ordered
+ bool
+
+
+ Whether the operations in this bulk write should be executed in
+ the order in which they were specified. If &false;, writes will
+ continue to be executed if an individual write fails. If &true;,
+ writes will stop executing if an individual write fails.
+
+
+ &true;
+
+
+ verboseResults
+ bool
+
+
+ Whether detailed results for each successful operation should be
+ included in the returned
+ MongoDB\Driver\BulkWriteCommandResult.
+
+
+ &false;
+
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+ &mongodb.option.collation;
+
+ hint
+ stringarrayobject
+
+
+ Index specification. Specify either the index name as a string or
+ the index key pattern. If specified, then the query system will only
+ consider plans using the hinted index.
+
+
+
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+ &mongodb.option.collation;
+
+ hint
+ stringarrayobject
+
+
+ Index specification. Specify either the index name as a string or
+ the index key pattern. If specified, then the query system will only
+ consider plans using the hinted index.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommand::deleteOne example
+
+deleteOne('db.coll', ['x' => 1]);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+?>
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommand::deleteMany
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\BulkWriteCommandResult
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommand/insertone.xml b/reference/mongodb/mongodb/driver/bulkwritecommand/insertone.xml
new file mode 100644
index 000000000000..453bfbdb4b68
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommand/insertone.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommand::insertOne
+ Add an insertOne operation
+
+
+
+ &reftitle.description;
+
+ publicmixedMongoDB\Driver\BulkWriteCommand::insertOne
+ stringnamespace
+ arrayobjectdocument
+
+
+ Add an insertOne operation to the
+ MongoDB\Driver\BulkWriteCommand. The document will
+ be inserted into the collection identified by
+ namespace.
+
+
+
+
+ &reftitle.parameters;
+
+ &mongodb.parameter.namespace;
+
+ document (arrayobject)
+
+
+ A document to insert.
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the _id of the inserted document. If the
+ document did not have an _id, the
+ MongoDB\BSON\ObjectId generated for the insert will
+ be returned.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommand::insertOne example
+
+ 1];
+$doc2 = ['_id' => 'custom-id', 'x' => 2];
+$doc3 = ['_id' => new MongoDB\BSON\ObjectId('0123456789abcdef01234567'), 'x' => 3];
+
+$id1 = $bulk->insertOne('db.coll', $doc1);
+$id2 = $bulk->insertOne('db.coll', $doc2);
+$id3 = $bulk->insertOne('db.coll', $doc3);
+
+var_dump($id1, $id2, $id3);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ string(24) "67f58058d1a0aa2fd80d55d0"
+}
+string(9) "custom-id"
+object(MongoDB\BSON\ObjectId)#4 (1) {
+ ["oid"]=>
+ string(24) "0123456789abcdef01234567"
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\BulkWriteCommandResult
+ MongoDB\BSON\ObjectId
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommand/replaceone.xml b/reference/mongodb/mongodb/driver/bulkwritecommand/replaceone.xml
new file mode 100644
index 000000000000..139e6decb6e6
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommand/replaceone.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommand::replaceOne
+ Add a replaceOne operation
+
+
+
+ &reftitle.description;
+
+ publicvoidMongoDB\Driver\BulkWriteCommand::replaceOne
+ stringnamespace
+ arrayobjectfilter
+ arrayobjectreplacement
+ arraynulloptions&null;
+
+
+ Add a replaceOne operation to the
+ MongoDB\Driver\BulkWriteCommand. The first document
+ matching filter in the collection identified by
+ namespace will be replaced.
+
+
+
+
+
+ &reftitle.parameters;
+
+ &mongodb.parameter.namespace;
+ &mongodb.parameter.filter;
+
+ replacement (arrayobject)
+
+
+ A replacement document.
+
+
+
+
+ options
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+ &mongodb.option.collation;
+
+ hint
+ stringarrayobject
+
+
+ Index specification. Specify either the index name as a string or
+ the index key pattern. If specified, then the query system will only
+ consider plans using the hinted index.
+
+
+
+
+ sort
+ arrayobject
+
+
+ Specify which document the operation replaces if the query matches
+ multiple documents. The first document matched by the sort order
+ will be replaced.
+
+
+
+
+ upsert
+ bool
+
+ If filter does not match an existing document,
+ insert a single document. The document will be
+ created from replacement.
+
+ &false;
+
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+
+ arrayFilters
+ array
+
+
+ An array of filter documents that determines which array elements to
+ modify for an update operation on an array field. See
+ Specify arrayFilters for Array Update Operations
+ in the MongoDB manual for more information.
+
+
+
+ &mongodb.option.collation;
+
+ hint
+ stringarrayobject
+
+
+ Index specification. Specify either the index name as a string or
+ the index key pattern. If specified, then the query system will only
+ consider plans using the hinted index.
+
+
+
+
+ upsert
+ bool
+
+ If filter does not match an existing document,
+ insert a single document. The document will be
+ created by applying operators in update to any
+ field values in filter.
+
+ &false;
+
+
+
+
+ options
+
+
+
+ Option
+ Type
+ Description
+ Default
+
+
+
+
+ arrayFilters
+ array
+
+
+ An array of filter documents that determines which array elements to
+ modify for an update operation on an array field. See
+ Specify arrayFilters for Array Update Operations
+ in the MongoDB manual for more information.
+
+
+
+ &mongodb.option.collation;
+
+ hint
+ stringarrayobject
+
+
+ Index specification. Specify either the index name as a string or
+ the index key pattern. If specified, then the query system will only
+ consider plans using the hinted index.
+
+
+
+
+ sort
+ arrayobject
+
+
+ Specify which document the operation updates if the query matches
+ multiple documents. The first document matched by the sort order
+ will be updated.
+
+
+
+
+ upsert
+ bool
+
+ If filter does not match an existing document,
+ insert a single document. The document will be
+ created by applying operators in update to any
+ field values in filter.
+
+ &false;
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommand::updateOne example
+
+updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 2]]);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+?>
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommand::replaceOne
+ MongoDB\Driver\BulkWriteCommand::updateMany
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\BulkWriteCommandResult
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult.xml
new file mode 100644
index 000000000000..6f4998e8d47b
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+ The MongoDB\Driver\BulkWriteCommandResult class
+ MongoDB\Driver\BulkWriteCommandResult
+
+
+
+
+
+ &reftitle.intro;
+
+ The MongoDB\Driver\BulkWriteCommandResult class
+ encapsulates information about an executed
+ MongoDB\Driver\BulkWriteCommand and is returned by
+ MongoDB\Driver\Manager::executeBulkWriteCommand.
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult
+
+
+
+ final
+
+ MongoDB\Driver\BulkWriteCommandResult
+
+
+
+
+ &Methods;
+
+
+
+
+
+
+
+
+ &reference.mongodb.mongodb.driver.entities.bulkwritecommandresult;
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeletedcount.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeletedcount.xml
new file mode 100644
index 000000000000..0c8a17ea1e1e
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeletedcount.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeletedCount
+ Returns the number of documents deleted
+
+
+
+ &reftitle.description;
+
+ finalpublicintMongoDB\Driver\BulkWriteCommandResult::getDeletedCount
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the total number of documents deleted by all operations.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeletedCount example
+
+insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getDeletedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeleteResults
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeleteresults.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeleteresults.xml
new file mode 100644
index 000000000000..2667f2b56aef
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getdeleteresults.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeleteResults
+ Returns verbose results for successful deletes
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\BSON\DocumentnullMongoDB\Driver\BulkWriteCommandResult::getDeleteResults
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns a document containing the result of each successful delete
+ operation, or &null; if verbose results were not requested. The document
+ keys will correspond to the index of the write operation from
+ MongoDB\Driver\BulkWriteCommand.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeleteResults example
+
+ true]);
+$bulk->insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getDeleteResults()->toPHP());
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ object(stdClass)#6 (1) {
+ ["deletedCount"]=>
+ object(MongoDB\BSON\Int64)#5 (1) {
+ ["integer"]=>
+ string(1) "3"
+ }
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getDeletedCount
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertedcount.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertedcount.xml
new file mode 100644
index 000000000000..0a858440597d
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertedcount.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertedCount
+ Returns the number of documents inserted
+
+
+
+ &reftitle.description;
+
+ finalpublicintMongoDB\Driver\BulkWriteCommandResult::getInsertedCount
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the total number of documents inserted (excluding upserts) by all
+ operations.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertedCount example
+
+insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getInsertedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertResults
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertresults.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertresults.xml
new file mode 100644
index 000000000000..63feaa022866
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getinsertresults.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertResults
+ Returns verbose results for successful inserts
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\BSON\DocumentnullMongoDB\Driver\BulkWriteCommandResult::getInsertResults
+
+
+
+ Since _id fields for inserted documents are generated by
+ the extension, the value of insertedId in each result
+ will match the return value of
+ MongoDB\Driver\BulkWriteCommand::insertOne for
+ the corresponding insert operation.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns a document containing the result of each successful insert
+ operation, or &null; if verbose results were not requested. The document
+ keys will correspond to the index of the write operation from
+ MongoDB\Driver\BulkWriteCommand.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertResults example
+
+ true]);
+
+$generatedId = $bulk->insertOne('db.coll', ['x' => 1]);
+
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($generatedId);
+
+var_dump($result->getInsertResults()->toPHP());
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ string(24) "67f7ee69783dcce702097b41"
+}
+object(stdClass)#8 (1) {
+ ["0"]=>
+ object(stdClass)#7 (1) {
+ ["insertedId"]=>
+ object(MongoDB\BSON\ObjectId)#6 (1) {
+ ["oid"]=>
+ string(24) "67f7ee69783dcce702097b41"
+ }
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getInsertedCount
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+ MongoDB\Driver\BulkWriteCommand::insertOne
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmatchedcount.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmatchedcount.xml
new file mode 100644
index 000000000000..036a1a6fe39a
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmatchedcount.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getMatchedCount
+ Returns the number of documents selected for update
+
+
+
+ &reftitle.description;
+
+ finalpublicintMongoDB\Driver\BulkWriteCommandResult::getMatchedCount
+
+
+
+ If the update operation results in no change to the document (e.g. setting
+ the value of a field to its current value), the matched count may be greater
+ than the value returned by
+ MongoDB\Driver\BulkWriteCommandResult::getModifiedCount.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the total number of documents selected for update by all operations.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getMatchedCount example
+
+insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getMatchedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getModifiedCount
+ MongoDB\Driver\BulkWriteCommandResult::getUpdateResults
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmodifiedcount.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmodifiedcount.xml
new file mode 100644
index 000000000000..eb19dc13a1a2
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getmodifiedcount.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getModifiedCount
+ Returns the number of existing documents updated
+
+
+
+ &reftitle.description;
+
+ finalpublicintMongoDB\Driver\BulkWriteCommandResult::getModifiedCount
+
+
+
+ If the update operation results in no change to the document (e.g. setting
+ the value of a field to its current value), the modified count may be less
+ than the value returned by
+ MongoDB\Driver\BulkWriteCommandResult::getMatchedCount.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the total number of existing documents updated by all operations.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getModifiedCount example
+
+insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getModifiedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getMatchedCount
+ MongoDB\Driver\BulkWriteCommandResult::getUpdateResults
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupdateresults.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupdateresults.xml
new file mode 100644
index 000000000000..9f4d2de1261b
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupdateresults.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getUpdateResults
+ Returns verbose results for successful updates
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\BSON\DocumentnullMongoDB\Driver\BulkWriteCommandResult::getUpdateResults
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns a document containing the result of each successful update
+ operation, or &null; if verbose results were not requested. The document
+ keys will correspond to the index of the write operation from
+ MongoDB\Driver\BulkWriteCommand.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getUpdateResults example
+
+ true]);
+$bulk->insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getUpdateResults()->toPHP());
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ object(stdClass)#7 (2) {
+ ["matchedCount"]=>
+ object(MongoDB\BSON\Int64)#5 (1) {
+ ["integer"]=>
+ string(1) "1"
+ }
+ ["modifiedCount"]=>
+ object(MongoDB\BSON\Int64)#6 (1) {
+ ["integer"]=>
+ string(1) "1"
+ }
+ }
+ ["2"]=>
+ object(stdClass)#11 (3) {
+ ["matchedCount"]=>
+ object(MongoDB\BSON\Int64)#8 (1) {
+ ["integer"]=>
+ string(1) "1"
+ }
+ ["modifiedCount"]=>
+ object(MongoDB\BSON\Int64)#9 (1) {
+ ["integer"]=>
+ string(1) "0"
+ }
+ ["upsertedId"]=>
+ object(MongoDB\BSON\ObjectId)#10 (1) {
+ ["oid"]=>
+ string(24) "67f7eb9b1f198bbcb880d575"
+ }
+ }
+ ["3"]=>
+ object(stdClass)#15 (3) {
+ ["matchedCount"]=>
+ object(MongoDB\BSON\Int64)#12 (1) {
+ ["integer"]=>
+ string(1) "1"
+ }
+ ["modifiedCount"]=>
+ object(MongoDB\BSON\Int64)#13 (1) {
+ ["integer"]=>
+ string(1) "0"
+ }
+ ["upsertedId"]=>
+ object(MongoDB\BSON\ObjectId)#14 (1) {
+ ["oid"]=>
+ string(24) "67f7eb9b1f198bbcb880d576"
+ }
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getMatchedCount
+ MongoDB\Driver\BulkWriteCommandResult::getModifiedCount
+ MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupsertedcount.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupsertedcount.xml
new file mode 100644
index 000000000000..9cdf351b39de
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/getupsertedcount.xml
@@ -0,0 +1,102 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount
+ Returns the number of documents upserted
+
+
+
+ &reftitle.description;
+
+ finalpublicintMongoDB\Driver\BulkWriteCommandResult::getUpsertedCount
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the total number of documents upserted by all operations.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+ &mongodb.throws.unacknowledged;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::getUpsertedCount example
+
+insertOne('db.coll', ['x' => 1]);
+$bulk->updateOne('db.coll', ['x' => 1], ['$set' => ['y' => 3]]);
+$bulk->updateOne('db.coll', ['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
+$bulk->updateOne('db.coll', ['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
+$bulk->deleteMany('db.coll', []);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->getUpsertedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult::getUpdateResults
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/bulkwritecommandresult/isacknowledged.xml b/reference/mongodb/mongodb/driver/bulkwritecommandresult/isacknowledged.xml
new file mode 100644
index 000000000000..2983f0c457c8
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/bulkwritecommandresult/isacknowledged.xml
@@ -0,0 +1,126 @@
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+ Returns whether the write was acknowledged
+
+
+
+ &reftitle.description;
+
+ finalpublicboolMongoDB\Driver\BulkWriteCommandResult::isAcknowledged
+
+
+
+ If the write is acknowledged, other fields will be available on the
+ MongoDB\Driver\BulkWriteCommandResult object.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns &true; if the write was acknowledged, and &false; otherwise.
+
+
+
+
+ &reftitle.errors;
+
+ &mongodb.throws.argumentparsing;
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged with acknowledged write concern
+
+insertOne('db.coll', ['x' => 1]);
+
+$result = $manager->executeBulkWriteCommand($bulk);
+
+var_dump($result->isAcknowledged());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ MongoDB\Driver\BulkWriteCommandResult::isAcknowledged with unacknowledged write concern
+
+ false]);
+$bulk->insertOne('db.coll', ['x' => 1]);
+
+$writeConcern = new MongoDB\Driver\WriteConcern(0);
+
+$result = $manager->executeBulkWriteCommand($bulk, ['writeConcern' => $writeConcern]);
+
+var_dump($result->isAcknowledged());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\WriteConcern
+ Write Concern reference
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception.xml b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception.xml
new file mode 100644
index 000000000000..c087ac020cea
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception.xml
@@ -0,0 +1,163 @@
+
+
+
+
+
+ The MongoDB\Driver\Exception\BulkWriteCommandException class
+ MongoDB\Driver\Exception\BulkWriteCommandException
+
+
+
+
+
+ &reftitle.intro;
+
+ Exception thrown due to failed execution of a
+ MongoDB\Driver\BulkWriteCommand.
+
+
+
+
+
+ &reftitle.classsynopsis;
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException
+
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException
+
+
+
+ extends
+ MongoDB\Driver\Exception\ServerException
+
+
+
+ MongoDB\Driver\Exception\Exception
+
+
+
+ &Properties;
+
+ private
+ MongoDB\BSON\Documentnull
+ errorReply
+
+
+ private
+ MongoDB\Driver\BulkWriteCommandResultnull
+ errorReply
+
+
+ private
+ array
+ writeConcernErrors
+
+
+ private
+ array
+ writeErrors
+
+
+ &InheritedProperties;
+
+
+
+
+
+ &Methods;
+
+
+ &InheritedMethods;
+
+
+
+
+
+
+
+
+
+
+
+ &reftitle.properties;
+
+
+ errorReply
+
+
+ Any top-level error that occurred when attempting to communicate with
+ the server or execute the bulk write. This value may be &null; if the
+ exception was thrown due to errors occurring on individual writes.
+
+
+
+
+ partialResult
+
+
+ A MongoDB\Driver\BulkWriteCommandResult reporting
+ the result of any successful operations that were performed before the
+ error was encountered. This value may not &null; if it cannot be
+ determined that at least one write was successfully performed (and
+ acknowledged).
+
+
+
+
+ writeConcernErrors
+
+
+ An array of any MongoDB\Driver\WriteConcernErrors
+ that occurred while executing the bulk write. This list may have
+ multiple items if more than one server command was required to execute
+ the bulk write.
+
+
+
+
+ writeErrors
+
+
+ An array of any MongoDB\Driver\WriteErrors
+ that occurred during the execution of individual write operations. Array
+ keys will correspond to the index of the write operation from
+ MongoDB\Driver\BulkWriteCommand. This map will
+ contain at most one entry if the bulk write was ordered.
+
+
+
+
+
+
+
+
+
+ &reference.mongodb.mongodb.driver.exception.entities.bulkwritecommandexception;
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/geterrorreply.xml b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/geterrorreply.xml
new file mode 100644
index 000000000000..bf44de90eb4f
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/geterrorreply.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply
+ Returns any top-level command error
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\BSON\DocumentnullMongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns any top-level error that occurred when attempting to communicate
+ with the server or execute the bulk write. This value may be &null; if the
+ exception was thrown due to errors occurring on individual writes.
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getErrorReply example
+
+executeCommand('admin', new MongoDB\Driver\Command([
+ 'configureFailPoint' => 'failCommand',
+ 'mode' => ['times' => 1],
+ 'data' => [
+ 'failCommands' => ['bulkWrite'],
+ 'errorCode' => 8, /* UnknownError */
+ ],
+]));
+
+$bulk = new MongoDB\Driver\BulkWriteCommand;
+$bulk->insertOne('db.coll', ['x' => 1]);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ var_dump($e->getErrorReply()?->toPHP());
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ float(0)
+ ["errmsg"]=>
+ string(43) "Failing command via 'failCommand' failpoint"
+ ["code"]=>
+ int(8)
+ ["codeName"]=>
+ string(12) "UnknownError"
+ ["$clusterTime"]=>
+ object(stdClass)#10 (2) {
+ ["clusterTime"]=>
+ object(MongoDB\BSON\Timestamp)#6 (2) {
+ ["increment"]=>
+ string(1) "7"
+ ["timestamp"]=>
+ string(10) "1744319389"
+ }
+ ["signature"]=>
+ object(stdClass)#9 (2) {
+ ["hash"]=>
+ object(MongoDB\BSON\Binary)#7 (2) {
+ ["data"]=>
+ string(20) ""
+ ["type"]=>
+ int(0)
+ }
+ ["keyId"]=>
+ object(MongoDB\BSON\Int64)#8 (1) {
+ ["integer"]=>
+ string(1) "0"
+ }
+ }
+ }
+ ["operationTime"]=>
+ object(MongoDB\BSON\Timestamp)#11 (2) {
+ ["increment"]=>
+ string(1) "7"
+ ["timestamp"]=>
+ string(10) "1744319389"
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getpartialresult.xml b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getpartialresult.xml
new file mode 100644
index 000000000000..4301076defe1
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getpartialresult.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult
+ Returns the result of any successful write operations
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\Driver\BulkWriteCommandResultnullMongoDB\Driver\Exception\BulkWriteCommandException::getPartialResult
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns a MongoDB\Driver\BulkWriteCommandResult
+ reporting the result of any successful operations that were performed before
+ the error was encountered. The return value will be &null; if it cannot be
+ determined that at least one write was successfully performed (and
+ acknowledged).
+
+
+
+
+ &reftitle.examples;
+
+ Partial result if at least one write is successful
+
+deleteMany('db.coll', []);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ $result = $e->getPartialResult();
+}
+
+var_dump($result?->getInsertedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ No partial result if no writes are successful
+
+deleteMany('db.coll', []);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$manager->executeBulkWriteCommand($bulk);
+
+$bulk = new MongoDB\Driver\BulkWriteCommand;
+$bulk->insertOne('db.coll', ['_id' => 1]);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ $result = $e->getPartialResult();
+}
+
+var_dump($result?->getInsertedCount());
+
+?>
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\BulkWriteCommandResult
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteconcernerrors.xml b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteconcernerrors.xml
new file mode 100644
index 000000000000..f38abe10c551
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteconcernerrors.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors
+ Returns any write concern errors
+
+
+
+ &reftitle.description;
+
+ finalpublicarrayMongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ An array of any MongoDB\Driver\WriteConcernErrors
+ that occurred while executing the bulk write. This list may have multiple
+ items if more than one server command was required to execute the bulk
+ write.
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getWriteConcernErrors example
+
+insertOne('db.coll', ['x' => 1]);
+
+$writeConcern = new MongoDB\Driver\WriteConcern(50);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk, ['writeConcern' => $writeConcern]);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ var_dump($e->getWriteConcernErrors());
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ object(MongoDB\Driver\WriteConcernError)#6 (3) {
+ ["message"]=>
+ string(29) "Not enough data-bearing nodes"
+ ["code"]=>
+ int(100)
+ ["info"]=>
+ object(stdClass)#8 (1) {
+ ["writeConcern"]=>
+ object(stdClass)#7 (3) {
+ ["w"]=>
+ int(50)
+ ["wtimeout"]=>
+ int(0)
+ ["provenance"]=>
+ string(14) "clientSupplied"
+ }
+ }
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\WriteConcern
+ MongoDB\Driver\WriteConcernError
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteerrors.xml b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteerrors.xml
new file mode 100644
index 000000000000..959423862f52
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/exception/bulkwritecommandexception/getwriteerrors.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors
+ Returns any write errors
+
+
+
+ &reftitle.description;
+
+ finalpublicarrayMongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors
+
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ An array of any MongoDB\Driver\WriteErrors that
+ occurred during the execution of individual write operations. Array keys
+ will correspond to the index of the write operation from
+ MongoDB\Driver\BulkWriteCommand. This map will
+ contain at most one entry if the bulk write was ordered.
+
+
+
+
+ &reftitle.examples;
+
+ MongoDB\Driver\Exception\BulkWriteCommandException::getWriteErrors example
+
+ false]);
+$bulk->deleteMany('db.coll', []);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+$bulk->insertOne('db.coll', ['_id' => 1]);
+
+try {
+ $result = $manager->executeBulkWriteCommand($bulk);
+} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
+ var_dump($e->getWriteErrors());
+}
+
+?>
+]]>
+
+ &example.outputs.similar;
+
+
+ object(MongoDB\Driver\WriteError)#5 (4) {
+ ["message"]=>
+ string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
+ ["code"]=>
+ int(11000)
+ ["index"]=>
+ int(2)
+ ["info"]=>
+ object(stdClass)#6 (0) {
+ }
+ }
+ [3]=>
+ object(MongoDB\Driver\WriteError)#7 (4) {
+ ["message"]=>
+ string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
+ ["code"]=>
+ int(11000)
+ ["index"]=>
+ int(3)
+ ["info"]=>
+ object(stdClass)#8 (0) {
+ }
+ }
+}
+]]>
+
+
+
+
+
+ &reftitle.seealso;
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\WriteError
+
+
+
+
+
+
diff --git a/reference/mongodb/mongodb/driver/manager/executebulkwritecommand.xml b/reference/mongodb/mongodb/driver/manager/executebulkwritecommand.xml
new file mode 100644
index 000000000000..f4343515a9fc
--- /dev/null
+++ b/reference/mongodb/mongodb/driver/manager/executebulkwritecommand.xml
@@ -0,0 +1,211 @@
+
+
+
+
+
+ MongoDB\Driver\Manager::executeBulkWriteCommand
+ Execute write operations using the bulkWrite command
+
+
+
+ &reftitle.description;
+
+ finalpublicMongoDB\Driver\BulkWriteCommandResultMongoDB\Driver\Manager::executeBulkWriteCommand
+ MongoDB\Driver\BulkWriteCommandbulk
+ arraynulloptions&null;
+
+
+ Executes one or more write operations on the primary server using the
+ bulkWrite
+ command introduced in MongoDB 8.0.
+
+
+ A MongoDB\Driver\BulkWriteCommand can be constructed
+ with one or more write operations of varying types (e.g. inserts, updates,
+ and deletes). Each write operation may target a different collection.
+
+
+ The default value for the "writeConcern" option will be
+ inferred from an active transaction (indicated by the
+ "session" option), followed by the
+ connection URI.
+
+
+
+
+ &reftitle.parameters;
+
+ &mongodb.parameter.bulkwritecommand;
+
+ options
+
+
+