PHP 8.5.0 Alpha 2 available for testing

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)

Escritura(s) a ejecutar.

options

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

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

writeConcern MongoDB\Driver\WriteConcern

Una preocupación de escritura a aplicar a la operación.

Valores devueltos

Retorna un MongoDB\Driver\BulkWriteCommandResult en caso de éxito.

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 ejemplo anterior mostrará :

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

?>

Resultado del ejemplo anterior es 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