insertMany() (Inserção em Lote)
Última atualização: 2026-10-09
insertMany() (Inserção em Lote)
insertMany() insere vários documentos em uma única chamada, ex.: `db.users.insertMany([{ name: 'A' }, { name: 'B' }])`. Com ordered: true (padrão), as inserções ocorrem em ordem e param no primeiro erro; com false, os documentos restantes ainda são tentados. O resultado contém acknowledged e insertedIds, mapeando o índice de cada documento para seu _id. Ele economiza muitas idas e voltas em comparação a um loop de insertOne(), sendo a escolha ideal para popular dados e migrações.
| Categoria | Escrita |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.insertMany(<documents>, { ordered: <bool>, writeConcern: <options> })
⚙️ Parâmetros
| documentos | Matriz de documentos BSON a inserir. |
|---|---|
| ordered | Opcional. true para no primeiro erro, false o ignora e continua; o padrão é true. |
| writeConcern | Opcional. Write concern. |
Retorno:Objeto de resultado com acknowledged e insertedIds (mapeamento índice para _id).
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// insertMany: insere três usuários de uma vez
db.users.insertMany([
{ name: 'Alice', age: 21 },
{ name: 'Bob', age: 25 },
{ name: 'Cara', age: 30 }
])
Saída:
{
acknowledged: true,
insertedIds: {
'0': ObjectId('64c8a1b20000000000000001'),
'1': ObjectId('64c8a1b20000000000000002'),
'2': ObjectId('64c8a1b20000000000000003')
}
}
📌 Notas
- Com ordered: true, uma falha desfaz os documentos já inseridos nesse lote
- As chaves de insertedIds são os índices dos documentos no array ('0', '1', ...)
- Um único lote deve permanecer dentro de maxWriteBatchSize e do limite de 16MB
🏷️ Tags Relacionados
💡 Casos Relacionados
Documentos e BSON: a base dos dados do MongoDB
Inserção de documentos: uma explicação detalhada sobre `insertOne` e `insertMany`
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é a diferença entre insertMany e insertOne?
AinsertMany() grava muitos documentos em uma única ida e volta; insertOne() grava um. Para cargas em lote, insertMany() supera de longe o loop de insertOne().
QO que a opção ordered de insertMany faz?
ACom ordered: true, as inserções param no primeiro erro e o lote é revertido; com false, os documentos com falha são ignorados e o restante ainda é inserido.
QO que insertMany retorna quando apenas alguns documentos falham?
AEle retorna acknowledged mais insertedIds cobrindo apenas os índices inseridos com sucesso; os detalhes das falhas ficam no BulkWriteError lançado.