MongoDB\Driver\Manager::executeBulkWriteCommand

(mongodb >=2.1.0)

MongoDB\Driver\Manager::executeBulkWriteCommandExecuta operações de gravação usando o comando bulkWrite

Descrição

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

Executa uma ou mais operações de gravação no servidor primário usando o comando » bulkWrite introduzido no MongoDB 8.0.

Um MongoDB\Driver\BulkWriteCommand pode ser construído com uma ou mais operações de gravação de tipos variados (por exemplo, inserções, atualizações e exclusões). Cada operação de gravação pode ter como alvo uma coleção diferente.

O valor padrão para a opção "writeConcern" será inferido a partir de uma transação ativa (indicada pela opção "session"), seguida pelo URI de conexão.

Parâmetros

bulk (MongoDB\Driver\BulkWriteCommand)

O comando de gravações a ser executado.

options

Opções
Opção Tipo Descrição
session MongoDB\Driver\Session

Uma sessão para associar à operação.

writeConcern MongoDB\Driver\WriteConcern

Um write concern a ser aplicado à operação.

Valor Retornado

Retorna MongoDB\Driver\BulkWriteCommandResult em caso de sucesso.

Erros/Exceções

Exemplos

Exemplo #1 Operações de gravação mistas

Operações de gravação mistas (ou seja, inserções, atualizações e exclusões) serão enviadas para o servidor usando um único comando » bulkWrite.

<?php

$manager
= new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWriteCommand;

// Exclui documentos de ambas as coleções
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);

// Insere documentos em duas coleções
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);

// Atualiza um documento em "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);

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

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

?>

O exemplo acima produzirá:

Inserido(s) 3 documento(s)
Atualizado(s) 1 documento(s)

Exemplo #2 Operações de gravação ordenadas causando um erro

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

?>

O exemplo acima produzirá algo semelhante 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) {
    }
  }
}
Inserido(s) 2 documento(s)

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top