Sends a BulkWrite object's queued insert, update or delete operations to a collection namespace.
The examples focus on the operation itself, including the important distinction: executeCommand runs a database command rather than a batch of document writes.
What It Does
Use the examples below to observe the behavior on a small dataset before extending it to application code.
Syntax and Return Value
MongoDB\Driver\Manager::executeBulkWrite(string $namespace, MongoDB\Driver\BulkWrite $bulk, ?array $options = null): MongoDB\Driver\WriteResult
The displayed signature describes the API or identifies any correction or optional dependency. When a parameter is optional, supply it only when the task requires it.
Example 1: Basic Use
Requires PECL mongodb and a reachable server. BulkWrite queues changes locally; only executeBulkWrite sends them. Cursors stream server results.
<?php
$manager = new MongoDB\Driver\Manager(getenv("MONGODB_URI") ?: "mongodb://127.0.0.1:27017");
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert(["task" => 'ship']);
$result = $manager->executeBulkWrite('demo.tasks', $bulk);
echo $result->getInsertedCount();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Example 2: Checking Behavior
Requires PECL mongodb and a reachable server. BulkWrite queues changes locally; only executeBulkWrite sends them. Cursors stream server results.
<?php
$manager = new MongoDB\Driver\Manager(getenv("MONGODB_URI") ?: "mongodb://127.0.0.1:27017");
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert(["task" => 'review']);
$result = $manager->executeBulkWrite('demo.audit', $bulk);
echo $result->getInsertedCount();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Example 3: Practical Example
Requires PECL mongodb and a reachable server. BulkWrite queues changes locally; only executeBulkWrite sends them. Cursors stream server results.
<?php
$manager = new MongoDB\Driver\Manager(getenv("MONGODB_URI") ?: "mongodb://127.0.0.1:27017");
$bulk = new MongoDB\Driver\BulkWrite();
$bulk->insert(["task" => 'archive']);
$result = $manager->executeBulkWrite('demo.queue', $bulk);
echo $result->getInsertedCount();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Important Behavior and Edge Cases
A namespace has form database.collection; use an explicit write concern and handle BulkWriteException.
This API is supplied by an optional extension that is not installed in the local test runtime, or requires a different PHP version. The example must be verified in a matching environment.
Comparison with Related Approaches
| Approach | Difference |
|---|---|
| MongoDB\Driver\Manager::executeBulkWrite | Sends a BulkWrite object's queued insert, update or delete operations to a collection namespace. |
| Related API or alternative | executeCommand runs a database command rather than a batch of document writes. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Ignoring the operation-specific limits | A namespace has form database.collection; use an explicit write concern and handle BulkWriteException. |
| Confusing it with a related API | executeCommand runs a database command rather than a batch of document writes. |
Key Takeaways
- Sends a BulkWrite object's queued insert, update or delete operations to a collection namespace.
- A namespace has form database.collection; use an explicit write concern and handle BulkWriteException.
- executeCommand runs a database command rather than a batch of document writes.
Use MongoDB\Driver\Manager::executeBulkWrite when its documented behavior matches the problem. Test the relevant edge cases in your own runtime before deploying it.