MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Manager::executeBulkWriteCommandEjecuta operaciones de escritura utilizando el comando bulkWrite

Descripción

final public MongoDB\Driver\Manager::executeBulkWriteCommand(MongoDB\Driver\BulkWriteCommand $bulk, ?array $options = null): MongoDB\Driver\BulkWriteCommandResult

Ejecuta una o varias operaciones de escritura en el servidor primario utilizando el comando » bulkWrite introducido en MongoDB 8.0.

Una MongoDB\Driver\BulkWriteCommand puede ser construida con una o varias operaciones de escritura de tipos variados (por ejemplo, inserciones, actualizaciones y eliminaciones). Cada operación de escritura puede apuntar a una colección diferente.

El valor por omisión para la opción "writeConcern" será deducido de una transacción activa (indicada por la opción "session"), seguida por la URI de conexión.

Parámetros

bulk (MongoDB\Driver\BulkWriteCommand)

The write(s) to execute.

options

options
Opción Tipo Descripción
session MongoDB\Driver\Session

Una sesión a asociar con la operación.

writeConcern MongoDB\Driver\WriteConcern

Un asunto de escritura a aplicar a la operación.

Valores devueltos

Returns MongoDB\Driver\BulkWriteCommandResult on success.

Errores/Excepciones

Ejemplos

Ejemplo #1 Operaciones de escritura mixtas

Las operaciones de escritura mixtas (por ejemplo, inserción, actualización y eliminación) serán enviadas al servidor utilizando una sola comando » bulkWrite

<?php

$manager
= new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWriteCommand;

// Elimina documentos de dos colecciones
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);

// Añade documentos a dos colecciones
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);

// Actualiza un documento en "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

$result = $manager->executeBulkWriteCommand($bulk);

printf("Insertados %d documento(s)\n", $result->getInsertedCount());
printf("Actualizados %d documento(s)\n", $result->getModifiedCount());

?>

El resultado del ejemplo sería:

Insertados 3 documento(s)
Actualizados 1 documento(s)

Ejemplo #2 Operación de escritura ordenada que provoca un error

<?php

$manager
= new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWriteCommand;

$bulk->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("Insertados %d documento(s)\n", $result->getInsertedCount());

?>

El resultado del ejemplo sería algo similar a:

array(1) {
  [3]=>
  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) {
    }
  }
}
Insertados 2 documento(s)

Ver también

add a note

User Contributed Notes

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