bulkWrite() (Operações Mistas em Lote)
Última atualização: 2026-10-09
bulkWrite() (Operações Mistas em Lote)
bulkWrite() executa várias operações de escrita de tipos mistos em uma única chamada: insertOne, updateOne, updateMany, replaceOne, deleteOne e deleteMany. Cada operação é um objeto com um tipo de operação mais sua carga, ex.: `db.users.bulkWrite([{ insertOne: { document: { name: 'A' } } }, { updateOne: { filter: { name: 'B' }, update: { $set: { age: 1 } } } }])`. O resultado agrupa contadores por tipo de operação.
| Categoria | Escrita |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.bulkWrite(<operations>, { ordered: <bool> })
⚙️ Parâmetros
| array de operações | Matriz de objetos de operação de escrita, cada um como {insertOne: {document: ...}}. |
|---|---|
| ordered | Opcional. true para no primeiro erro, false continua; o padrão é true. |
Retorno:BulkWriteResult, um objeto contador agrupado por tipo de operação.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// bulkWrite: insere, atualiza e exclui em uma única chamada
db.users.bulkWrite([
{ insertOne: { document: { name: 'Dana', age: 28 } } },
{ updateOne: { filter: { name: 'Alice' }, update: { $set: { age: 23 } } } },
{ deleteOne: { filter: { name: 'Bob' } } }
])
Saída:
{
acknowledged: true,
insertedCount: 1,
matchedCount: 1,
modifiedCount: 1,
deletedCount: 1
}
📌 Notas
- Tipos de operação: insertOne/updateOne/updateMany/replaceOne/deleteOne/deleteMany
- Com ordered: false, operações com falha são ignoradas e o restante continua
- updateOne e similares aceitam uma opção upsert embutida
🏷️ Tags Relacionados
💡 Casos Relacionados
Inserção de documentos: uma explicação detalhada sobre `insertOne` e `insertMany`
Padrões avançados do Mongoose: desempenho e flexibilidade
Validação de esquema: validação de dados na camada do banco de dados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QbulkWrite é mais rápido que chamar métodos em um loop?
AbulkWrite() envia uma única requisição para todas as operações, muito mais rápido que loops de chamadas individuais — ideal para migrações e importações.
QQuais tipos de operação o bulkWrite suporta?
AEle suporta insertOne, updateOne, updateMany, replaceOne, deleteOne e deleteMany, combináveis em uma única chamada.
QComo a opção ordered funciona no bulkWrite?
Aordered: true (padrão) para no primeiro erro; false ignora operações com falha e continua — bom para trabalhos em lote onde o sucesso parcial é aceitável.