(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)

W pełni wykwalifikowana przestrzeń nazw (np. "nazwaBazyDanych.nazwaKolekcji").

bulk (MongoDB\Driver\BulkWrite)

MongoDB\Driver\BulkWrite do wykonania.


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.

Zwracane wartości

Zwraca MongoDB\Driver\WriteResult przy powodzeniu.


Rejestr zmian

Wersja Opis
1.4.4 MongoDB\Driver\Exception\InvalidArgumentException will be thrown if the "session" option is used in combination with an unacknowledged write concern.
1.4.0 The third parameter is now an options array. For backwards compatibility, this paramater will still accept a MongoDB\Driver\WriteConcern object.
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.


Przykład #1 MongoDB\Driver\Manager::executeBulkWrite() example


= 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::MAJORITY100);
$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);

/* 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());

Powyższy przykład wyświetli coś podobnego do:

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) {
  string(24) "54d3adc3ce7a792f4d703756"
upsertedId[4]: int(3)
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top