Visão geral
Neste guia, você pode aprender a usar o driver Node.js para executar operações em massa. Operações em massa ajudam a reduzir o número de chamadas para o servidor. Em vez de enviar uma solicitação para cada operação, você pode realizar várias operações em uma ação.
Dica
Para saber mais sobre operações em massa, consulte Operações de gravação em massa no manual do MongoDB Server.
Este guia inclui as seguintes seções:
Operações de inserção em massa descreve como realizar operações de inserção em massa em sua collection ou cliente.
Operações de substituição em massa descreve como executar operações de substituição em massa em sua collection ou cliente.
Bulk Update Operations descreve como executar operações de atualização em massa em sua collection ou cliente.
Operações de exclusão em massa descreve como executar operações de exclusão em massa em sua collection ou cliente.
OTipo de Retorno descreve o objeto de retorno que resulta de suas operações de escrita em massa.
Tratamento de exceções descreve as exceções que ocorrem se qualquer uma das operações de gravação em massa falhar.
Informações adicionais fornecem links para recursos e documentação de API para os tipos e métodos mencionados neste guia.
Importante
Requisitos de versão do servidor e do driver
As operações de gravação em massa em nível de collection exigem as seguintes versões:
MongoDB Server versão 3.2 ou posterior
Versão do driver Node.js 3.6 ou posterior
Dados de amostra
Os exemplos deste guia usam as movies users collections sample_mflix e no banco de dados , que está incluído nos conjuntos de dados de exemplo do Atlas . Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Operações de inserção em massa
Para executar uma operação de inserção em massa, crie um modelo de operação em massa para cada documento que você deseja inserir. Em seguida, passe uma lista desses modelos para o método bulkWrite().
Inserções em massa de collections
Para executar uma operação de inserção em massa na sua collection, crie um InsertOneModel para cada operação. Em seguida, chame o método bulkWrite() em sua coleção e passe uma array de modelos como parâmetro. Para criar um InsertOneModel, especifique o campo document do modelo e defina-o para o documento que você deseja inserir.
Exemplo
Este exemplo executa as seguintes ações:
Especifica duas instâncias do
InsertOneModelem uma array. CadaInsertOneModelrepresenta um documento para inserir na coleçãomoviesno banco de dadossample_mflix.Chama o método
bulkWrite()na coleçãomoviese passa uma array de modelos como parâmetro.Imprime o número de documentos inseridos.
Operações de substituição em massa
Para executar uma operação de substituição em massa, crie um modelo de operação em massa para cada documento que deseja substituir. Em seguida, passe uma lista desses modelos para o método bulkWrite().
Coleções de substituições em massa
Para executar uma operação de substituição em massa na sua collection, crie um ReplaceOneModel para cada operação. Em seguida, chame o método bulkWrite() em sua coleção e passe uma array de modelos como parâmetro.
A tabela a seguir descreve os campos que você pode definir em um ReplaceOneModel:
Campo | Descrição |
|---|---|
| The filter that matches the document you want to replace. Type: Document |
| The replacement document. Type: Document |
| (Optional) The collation to use when sorting results. To learn more
about collations, see the Collations guide. Type: String or Object |
| (Optional) The index to use for the operation. To learn more about
indexes, see the Indexes on Collections guide. Type: Bson |
| (Optional) Whether a new document is created if no document matches the filter. By default, this field is set to false.Type: Boolean |
Exemplo
Este exemplo executa as seguintes ações:
Especifica duas instâncias do
ReplaceOneModelem uma array. As instânciasReplaceOneModelcontêm instruções para substituir documentos que representam filmes na coleçãomovies.Chama o método
bulkWrite()na coleçãomoviese passa uma array de modelos como parâmetro.Imprime o número de documentos modificados.
Operações de atualização em massa
Para executar uma operação de atualização em massa, crie um modelo de operação em massa para cada atualização que você deseja fazer. Em seguida, passe uma lista desses modelos para o método bulkWrite().
Atualizações em massa de coleções
Para executar uma operação de atualização em massa na sua collection, crie um UpdateOneModel ou UpdateManyModel para cada operação. Em seguida, chame o método bulkWrite() em sua collection e passe uma array de modelos como parâmetro. Um UpdateOneModel atualiza somente um documento que corresponde a um filtro, enquanto um UpdateManyModel atualiza todos os documentos que correspondem a um filtro.
A tabela a seguir descreve os campos que você pode definir em um UpdateOneModel ou UpdateManyModel:
Campo | Descrição |
|---|---|
| The filter that matches one or more documents you want to update. When
specified in an UpdateOneModel, only the first matching document will
be updated. When specified in an UpdateManyModel, all matching documents
will be updated.Type: Document |
| The update to perform. Type: Document |
| (Optional) A set of filters specifying which array elements an update
applies to if you are updating an array-valued field. Type: Array |
| (Optional) The collation to use when sorting results. To learn more about
collations, see the Collations guide. Type: Object |
| (Optional) The index to use for the operation. To learn more about
indexes, see the Indexes on Collections guide. Type: String or Object |
| (Optional) Whether a new document is created if no document matches the filter.
By default, this field is set to false.Type: Boolean |
Exemplo
Este exemplo executa as seguintes ações:
Especifica uma instância
UpdateOneModele uma instânciaUpdateManyModelem uma array. Esses modelos contêm instruções para atualizar documentos que representam filmes na coleçãomovies.Chama o método
bulkWrite()na coleçãomoviese passa uma array de modelos como parâmetro.Imprime o número de documentos modificados.
Operações de exclusão em massa
Para executar uma operação de exclusão em massa, crie um modelo de operação em massa para cada operação de exclusão. Em seguida, passe uma lista desses modelos para o método bulkWrite().
Exclusões em massa de collections
Para executar uma operação de exclusão em massa em sua collection, crie um DeleteOneModel ou DeleteManyModel para cada operação. Em seguida, chame o método bulkWrite() em sua collection e passe uma array de modelos como parâmetro. Um DeleteOneModel exclui apenas um documento que corresponde a um filtro, enquanto um DeleteManyModel exclui todos os documentos que correspondem a um filtro.
A tabela a seguir descreve os campos que você pode definir em DeleteOneModel ou DeleteManyModel:
Campo | Descrição |
|---|---|
| The filter that matches one or more documents you want to delete. When
specified in a DeleteOneModel, only the first matching document will
be deleted. When specified in a DeleteManyModel, all matching documents
will be deleted.Type: Document |
| (Optional) The collation to use when sorting results. To learn more about
collations, see the Collations guide. Type: Object |
| (Optional) The index to use for the operation. To learn more about
indexes, see the Indexes on Collections guide. Type: String or Object |
Exemplo
Este exemplo executa as seguintes ações:
Especifica uma instância
DeleteOneModele uma instânciaDeleteManyModelem uma array. Esses modelos contêm instruções para excluir documentos na coleçãomovies.Chama o método
bulkWrite()na coleçãomoviese passa uma array de modelos como parâmetro.Imprime o número de documentos excluídos.
Tipo de devolução
O método Collection.bulkWrite() retorna um objeto BulkWriteResult, que fornece informações sobre sua operação em massa.
As tabelas a seguir descrevem os campos de um objeto BulkWriteResult :
Campo | Descrição |
|---|---|
| O número de documentos inseridos |
| O número de documentos correspondentes |
| O número de documentos atualizados |
| O número de documentos atualizados |
| O número de documentos excluídos |
Tratamento de exceções
Se alguma operação de gravação em massa chamada em uma collection não for bem-sucedida, o driver Node.js lançará um MongoBulkWriteError e não executará mais nenhuma operação se a opção ordered estiver definida como true. Se ordered estiver definido como false, ele tentará continuar com as operações subsequentes.
Dica
Para saber mais sobre operações em massa ordenadas e não ordenadas, consulte a seção Operações ordenadas versus não ordenadas no guia de escrita em massa do manual do MongoDB Server.
Um objeto MongoBulkWriteError contém as seguintes propriedades:
Propriedade | Descrição |
|---|---|
| The error message. Type: String |
| An array of errors that occurred during the bulk write operation. Type: BulkWriteError[] |
| Write concern errors that occurred during execution of the bulk write operation. Type: WriteConnectionError[] |
| The results of any successful operations performed before the exception was
thrown. Type: BulkWriteResult[] |
| The underlying error object, which may contain more details. Type: Error |
Informações adicionais
Para saber mais sobre operações em massa, consulte Operações de gravação em massa no manual do MongoDB Server.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: