db.collection.initializeOrderedBulkOp()
Nesta página
Dica
O MongoDB também fornece o método db.collection.bulkWrite()
para executar operações de gravação em massa.
Definição
db.collection.initializeOrderedBulkOp()
Importante
Método mongosh
Esta página documenta um método
mongosh
. Esta não é a documentação de um driver de idioma específico, como Node.js.Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
Inicializa e retorna um novo construtor de operações do
Bulk()
para uma coleção. O construtor constrói uma lista ordenada de operações de gravação que MongoDB executa em massa.Retorna: novo objeto de construtor de operações Bulk()
.
Comportamento
Ordem de operação
Com uma lista de operações ordenadas, o MongoDB executa as operações de gravação na lista serialmente.
Execução de operações
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.
Operações Bulk()
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, chame Bulk.getOperations()
após a execução.
Em geral, a execução de uma lista ordered
de operações em uma coleção fragmentada em geral será mais lenta do que a execução de uma lista unordered
, pois com uma lista ordenada, cada operação deve aguardar a conclusão da operação anterior.
Error Handling
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.
Exemplos
O seguinte inicializa um construtor de operações Bulk()
na users
collection, adiciona uma série de operações de gravação e executa as operações:
var bulk = db.users.initializeOrderedBulkOp(); bulk.insert( { user: "abc123", status: "A", points: 0 } ); bulk.insert( { user: "ijk123", status: "A", points: 0 } ); bulk.insert( { user: "mop123", status: "P", points: 0 } ); bulk.find( { status: "D" } ).delete(); bulk.find( { status: "P" } ).update( { $set: { comment: "Pending" } } ); bulk.execute();