Este capítulo introduz operações em lote (bulkWrite) nos dados de documentos do MongoDB usando o shell mongo. Aqui, operações em lote não se referem apenas à atualização em lote de documentos mencionados nos capítulos anteriores, mas também incluem o suporte para realizar um lote de operações de escrita, incluindo inserção, atualização e exclusão de documentos.

A função bulkWrite é usada para operações em lote no shell mongo.

Dica: As operações em lote são frequentemente usadas em cenários que exigem sincronização em lote de dados.

Operações de escrita suportadas pela função bulkWrite

As operações em lote suportam as seguintes combinações de operações de escrita:

  • insertOne - Inserir um documento
  • updateOne - Atualizar um documento
  • updateMany - Atualizar um lote de documentos
  • replaceOne - Substituir um documento
  • deleteOne - Excluir um documento
  • deleteMany - Excluir um lote de documentos

Formato de sintaxe

db.collection.bulkWrite(
   [ <operação 1>, <operação 2>, ... ],
)

Explicação:

  • operação - Representa a configuração da operação de escrita
  • bulkWrite aceita um array de operações de escrita.

Exemplo

Aqui está um exemplo abrangente que mostra a execução em lote de um conjunto de operações de escrita de documento.

db.inventory.bulkWrite(
      [
         // Inserir um documento
         { insertOne :
            {
               // Conteúdo do documento
               "document" :
               {
                  "_id" : 4, "char" : "Dithras", "class" : "bárbaro", "lvl" : 4
               }
            }
         },
         { insertOne :
            {
               "document" :
               {
                  "_id" : 5, "char" : "Taeln", "class" : "lutador", "lvl" : 3
               }
            }
         },
         // Atualizar um documento, updateMany é semelhante para atualizar um lote de documentos
         { updateOne :
            {
               // Condição de atualização
               "filter" : { "char" : "Eldon" },
               // Conteúdo de atualização
               "update" : { $set : { "status" : "Lesão Crítica" } }
            }
         },
         // Excluir um documento, deleteMany é semelhante para excluir vários documentos
         { deleteOne :
            // Condição de exclusão
            { "filter" : { "char" : "Brisbane" } }
         },
         // Substituir um documento
         { replaceOne :
            {
               // Condição de substituição
               "filter" : { "char" : "Meldane" },
               // Conteúdo de substituição
               "replacement" : { "char" : "Tanys", "class" : "oráculo", "lvl" : 4 }
            }
         }
      ]
   );