Bulk.insert()
Nesta página
Dica
O MongoDB também fornece o método db.collection.bulkWrite()
para executar operações de gravação em massa.
Descrição
Bulk.insert(<document>)
Adiciona uma operação de inserção a uma lista de operações em massa.
Bulk.insert()
aceita o seguinte parâmetro:ParâmetroTipoDescriçãodoc
documentoDocumento a inserir. O tamanho do documento deve ser menor ou igual ao tamanho máximo do documento BSON.
Comportamento
Inserir Imprecisões
Mesmo que você encontre um erro de servidor durante uma inserção, alguns documentos podem ter sido inseridos.
Após uma inserção bem-sucedida, o sistema retorna BulkWriteResult.insertedCount
, o número de documentos inseridos na collection. Se a operação de inserção for interrompida por uma alteração de estado do conjunto de réplicas, o sistema poderá continuar inserindo documentos. Como resultado, BulkWriteResult.insertedCount
pode reportar menos documentos do que os que foram realmente inseridos.
Consideração de desempenho para dados aleatórios
Se uma operação insere uma grande quantidade de dados aleatórios (por exemplo, índices com hash) em um campo indexado, o desempenho da inserção pode diminuir. Inserções em massa de dados aleatórios criam entradas de índice aleatórias, o que aumenta o tamanho do índice. Se o índice atingir o tamanho que requer cada inserção aleatória para acessar uma entrada de índice diferente, as inserções resultarão em uma alta taxa de remoção e substituição do cache WiredTiger. Quando isso acontece, o índice não está mais totalmente no cache e é atualizado no disco, o que diminui o desempenho.
Para melhorar o desempenho de inserções em massa de dados aleatórios em campos indexados, você pode:
Soltar o índice e recriá-o depois de inserir os dados aleatórios.
Insira os dados em uma coleção não indexada vazia.
A criação do índice após a inserção em massa classifica os dados na memória e executa uma inserção ordenada em todos os índices.
Exemplo
A seguir, inicializamos um construtor de operações Bulk()
para a collection items
var bulk = db.items.initializeUnorderedBulkOp(); bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } ); bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } ); bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } ); bulk.execute();