Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Bulk()

Nesta página

  • Descrição
  • Compatibilidade
  • Operações em massa ordenadas e não ordenadas
  • Métodos

Dica

O MongoDB também fornece o método db.collection.bulkWrite() para executar operações de gravação em massa.

Bulk()

Construtor de bulk operations usado para construir uma lista de write operations a serem executadas em bulk para uma única coleção. Para instanciar o construtor, utilize o método db.collection.initializeOrderedBulkOp() ou db.collection.initializeUnorderedBulkOp().

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

O construtor pode construir a lista de operações como ordenadas ou não ordenadas.

Com uma lista de operações ordenadas, o MongoDB executa as operações de gravação na lista serialmente. Se ocorrer um erro durante o processamento de uma das operações de gravação, o MongoDB retornará sem processar as operações de gravação restantes na lista.

Utilize o db.collection.initializeOrderedBulkOp() para criar um construtor para uma lista ordenada de comandos de escrita.

Ao executar uma lista ordered de operações, o MongoDB agrupa as operações por operation type e contiguidade, ou seja, operações contíguas do mesmo tipo são agrupadas. Por exemplo, se uma lista ordenada tiver duas operações de inserção seguidas por uma operação de atualização seguida por outra operação de inserção, o MongoDB agrupa as operações em três grupos separados: o primeiro contém as duas operações de inserção, o grupo contém a operação de atualização e o terceiro contém a última operação de inserção. Esse comportamento está sujeito a alterações em versões futuras.

Bulk() operações em mongosh e métodos comparáveis nos drivers não têm um limite para o número de operações em um grupo. Para ver como as operações são agrupadas para execução de operações em massa, Bulk.getOperations() após a execução.

Dica

Veja também:

A execução de uma lista de operações ordered em uma collection fragmentada geralmente será mais lenta do que a execução de uma lista unordered, já que, com uma lista ordenada, cada operação deve aguardar a conclusão da operação anterior.

Com uma lista de operações não ordenadas, o MongoDB pode executar em paralelo, bem como em uma ordem não determinística, as operações de gravação na lista. Se ocorrer um erro durante o processamento de uma das operações de gravação, o MongoDB continuará processando as operações de gravação restantes na lista.

Utilize o db.collection.initializeUnorderedBulkOp() para criar um construtor para uma lista não ordenada de comandos de escrita.

Ao executar uma lista unordered de operações, o MongoDB agrupa as operações. Com uma operação em massa não ordenada, as operações na lista podem ser reordenadas para aumentar o desempenho. Dessa forma, os aplicativos não devem depender da ordem ao executar unordered operações em massa.

Bulk() operações em mongosh e métodos comparáveis nos drivers não têm um limite para o número de operações em um grupo. Para ver como as operações são agrupadas para execução de operações em massa, Bulk.getOperations() após a execução.

Bulk() pode ser usado dentro de transações distribuídas.

Para operações Bulk.insert(), a collection já deve existir.

Para Bulk.find.upsert(), se a operação resultar em um upsert, a collection já deverá existir.

Não defina explicitamente a preocupação de gravação para a operação se for executada em uma transação. Para usar write concern com transações, consulte Transações e write concern.

Importante

Na maioria dos casos, uma transação distribuída incorre em um custo de desempenho maior do que as gravações de um único documento, e a disponibilidade de transações distribuídas não deve substituir o design eficaz do esquema. Em muitos cenários, o modelo de dados desnormalizado (documentos e arrays incorporados) continuará a ser ideal para seus dados e casos de uso. Ou seja, para muitos cenários, modelar seus dados adequadamente minimizará a necessidade de transações distribuídas.

Para considerações adicionais sobre o uso de transações (como limite de tempo de execução e limite de tamanho do oplog), consulte também Considerações de produção.

O construtor Bulk() tem os seguintes métodos:

Nome
Descrição
Adiciona uma operação de inserção a uma lista de operações.
Especifica a condição de consulta para uma atualização ou uma operação de remoção.
Adiciona uma operação de exclusão de vários documentos a uma lista de operações.
Adiciona uma única operação de exclusão de documento a uma lista de operações.
Um alias para Bulk.find.delete().
Um alias para Bulk.find.deleteOne().
Adiciona uma operação de substituição de documento único a uma lista de operações.
Adiciona uma única operação de atualização de documento a uma lista de operações.
Adiciona uma operação de atualização multi a uma lista de operações.
Especifica upsert: true para uma operação de atualização.
Executa uma série de operações em massa.
Retorna uma array de operações de gravação executadas no objeto de operações Bulk().
Retorna um documento JSON que contém o número de operações e lotes no objeto de operações Bulk().
Retorna os resultados de Bulk.toJSON() como uma string.

Voltar

db.collection.initializeUnorderedBulkOp