MongoDB\Driver\Manager::executeBulkWrite
(mongodb >=1.0.0)
MongoDB\Driver\Manager::executeBulkWrite — Executa uma ou mais operações de escrita
Descrição
$namespace
, MongoDB\Driver\BulkWrite $bulk
, array|MongoDB\Driver\WriteConcern|null $options
= null
): MongoDB\Driver\WriteResultExecuta uma ou mais operações de escrita no servidor primário.
Um MongoDB\Driver\BulkWrite pode ser construído com uma ou mais operações de escrita de vários tipos (por exemplo, atualizações, exclusões e inserções). O driver tentará enviar operações do mesmo tipo ao servidor no menor número possível de solicitações para otimizar viagens de ida e volta.
O valor padrão para a opção "writeConcern"
será
inferido de uma transação ativa (indicada pela
opção "session"
), seguida pelo
URI de conexão.
Parâmetros
namespace
(string)-
Um namespace totalmente qualificado (por exemplo,
"nomeDoBancoDados.nomeDaColecao"
). bulk
(MongoDB\Driver\BulkWrite)-
As gravações a serem executadas.
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\WriteResult em caso de sucesso.
Erros/Exceções
- Lança MongoDB\Driver\Exception\InvalidArgumentException se
bulk
não contiver operações de escrita. - Lança MongoDB\Driver\Exception\InvalidArgumentException se
bulk
já tiver sido executado. Objetos MongoDB\Driver\BulkWrite não podem ser executados múltiplas vezes. - Lança uma exceção MongoDB\Driver\Exception\InvalidArgumentException se a opção
"session"
for usada em combinação com um write concern não confirmado. - Lança uma exceção MongoDB\Driver\Exception\InvalidArgumentException em caso de erro ao analisar argumentos.
- Lança uma exceção MongoDB\Driver\Exception\ConnectionException se a conexão com o servidor falhar (por outros motivos além da autenticação).
- Lança uma exceção MongoDB\Driver\Exception\AuthenticationException se a autenticação for necessária e falhar.
- Lança uma exceção MongoDB\Driver\Exception\BulkWriteException em caso de qualquer falha de escrita (por exemplo, erro de escrita, falha ao aplicar um write concern).
- Lança MongoDB\Driver\Exception\RuntimeException no caso de outros erros.
Registro de Alterações
Versão | Descrição |
---|---|
PECL mongodb 1.4.4 |
MongoDB\Driver\Exception\InvalidArgumentException
será lançado se a opção "session" for usada em combinação
com uma preocupação de gravação não reconhecida.
|
PECL mongodb 1.4.0 |
O terceiro parâmetro agora é um array options .
Para compatibilidade com versões anteriores, este parâmetro ainda aceitará um
objeto MongoDB\Driver\WriteConcern.
|
PECL mongodb 1.3.0 |
MongoDB\Driver\Exception\InvalidArgumentException
agora é lançada se bulk não contiver nenhuma operação
de escrita. Anteriormente, uma
MongoDB\Driver\Exception\BulkWriteException era
lançada.
|
Exemplos
Example #1 Exemplo de MongoDB\Driver\Manager::executeBulkWrite()
<?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::MAJORITY, 100);
$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);
}
/* Se o WriteConcern não puder ser atendido */
if ($writeConcernError = $result->getWriteConcernError()) {
printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}
/* Se uma escrita não pôde acontecer */
foreach ($result->getWriteErrors() as $writeError) {
printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
}
?>
O exemplo acima produzirá algo semelhante a:
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)
Veja Também
- MongoDB\Driver\BulkWrite
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\Server::executeBulkWrite() - Executa uma ou mais operações de gravação neste servidor