MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeBulkWriteExecute one or more write operations

Description

final public MongoDB\Driver\WriteResult MongoDB\Driver\Manager::executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, array $options = array() ] )

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.

Liste de paramètres

namespace (string)

Un espace de noms totalement qualifié (e.g. "databaseName.collectionName")

bulk (MongoDB\Driver\BulkWrite)

Écriture(s) à exécuter.

options

options
Option Type Description
session MongoDB\Driver\Session

Une session à associer à l'opération.

writeConcern MongoDB\Driver\WriteConcern

Une préoccupation d'écriture à appliquer à l'opération.

Valeurs de retour

Retourne un MongoDB\Driver\WriteResult en cas de succès.

Erreurs / Exceptions

Historique

Version Description
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.

Exemples

Exemple #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::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);
    
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());
}
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

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)

Voir aussi


MongoDB\Driver\Manager
PHP Manual