Dica
O MongoDB também fornece o método Mongo.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çãodocdocumento
Documento a inserir. O tamanho do documento deve ser menor ou igual ao tamanho máximo do documento BSON.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Observação
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
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 , o número de documentos inseridos na coleção. 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, pode relatar menos documentos do que os 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();