Realizar operações em massa
O método bulkWrite()
executa operações de gravação em lote em uma coleção. Esse método reduz o número de viagens de ida e volta de rede do aplicativo para o servidor, o que, portanto, aumenta a taxa de transferência e o desempenho. As gravações em massa retornam uma coleção de resultados para todas as operações somente depois que todas as operações passadas para o método forem concluídas.
Você pode especificar uma ou mais das seguintes operações de gravação no bulkWrite()
:
insertOne
updateOne
updateMany
deleteOne
deleteMany
replaceOne
O método bulkWrite()
aceita os seguintes parâmetros:
operations
: especifica as operações de gravação em massa a serem executadas. Passe cada operação parabulkWrite()
como um objeto em uma array. Para exemplos que mostram a sintaxe para cada operação de gravação, consulte a documentação da API do BulkWrite.options
: configurações opcionais que afetam a execução da operação, como se as operações de gravação devessem ser executadas em ordem sequencial e a write concern.Por padrão, o MongoDB executa operações de gravação em massa, uma a uma, na ordem especificada (por exemplo, em série). Durante uma gravação em massa ordenada, se ocorrer um erro durante o processamento de uma operação, o MongoDB retornará sem processar as operações restantes na lista. Em contraste, quando
ordered
éfalse
, o MongoDB continua processando as operações de gravação restantes na lista. As operações não ordenadas são teoricamente mais rápidas, já que o MongoDB pode executá-las em paralelo, mas só devem ser usadas se as gravações não dependerem da ordem.
Se você criar um índice com uma restrição de índice exclusivo, poderá encontrar um erro de gravação de chave duplicada durante uma operação no seguinte formato:
Error during bulkWrite, BulkWriteError: E11000 duplicate key error collection: ...
Da mesma forma, se você tentar executar uma gravação em massa em uma coleção que usa validação de esquema, você poderá encontrar avisos ou erros relacionados à formatação de documentos inseridos ou modificados.
Exemplo
O exemplo de código a seguir executa uma operação de gravação em massa na coleção theaters
do banco de dados sample_mflix
. O exemplo de chamada para bulkWrite()
inclui exemplos de operações de gravação insertOne
, updateMany
e deleteOne
:
Observação
Você pode utilizar este exemplo para se conectar a uma instância do MongoDB e interagir com um banco de dados que contém dados de amostra. Para saber mais sobre como se conectar à sua instância do MongoDB e carregar um conjunto de dados de amostra, consulte o Guia de exemplos de uso.
Ao executar o exemplo anterior, você deverá ver a seguinte saída:
BulkWriteResult { insertedCount: 2, matchedCount: 1, modifiedCount: 1, deletedCount: 0, upsertedCount: 0, upsertedIds: {}, insertedIds: { '0': new ObjectId("..."), '1': new ObjectId("...") } }