Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Bulk.insert()

Nesta página

  • Descrição
  • Comportamento
  • Exemplo

Dica

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âmetro
Tipo
Descrição
doc
documento
Documento a inserir. O tamanho do documento deve ser menor ou igual ao tamanho máximo do documento BSON.

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.

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.

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();

Dica

Veja também:

← Bulk.getOperations()