Menu Docs
Página inicial do Docs
/ /
Operações CRUD

Operações em massa

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:

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

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 .

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().

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.

Este exemplo executa as seguintes ações:

  1. Especifica duas instâncias do InsertOneModel em uma array. Cada InsertOneModel representa um documento para inserir na coleção movies no banco de dados sample_mflix .

  2. Chama o método bulkWrite() na coleção movies e passa uma array de modelos como parâmetro.

  3. Imprime o número de documentos inseridos.

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().

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

filter

The filter that matches the document you want to replace.
Type: Document

replacement

The replacement document.
Type: Document

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: String or Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: Bson

upsert

(Optional) Whether a new document is created if no document matches the filter.
By default, this field is set to false.
Type: Boolean

Este exemplo executa as seguintes ações:

  1. Especifica duas instâncias do ReplaceOneModel em uma array. As instâncias ReplaceOneModel contêm instruções para substituir documentos que representam filmes na coleção movies.

  2. Chama o método bulkWrite() na coleção movies e passa uma array de modelos como parâmetro.

  3. Imprime o número de documentos modificados.

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().

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

filter

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

update

The update to perform.
Type: Document

arrayFilters

(Optional) A set of filters specifying which array elements an update applies to if you are updating an array-valued field.
Type: Array

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: String or Object

upsert

(Optional) Whether a new document is created if no document matches the filter. By default, this field is set to false.
Type: Boolean

Este exemplo executa as seguintes ações:

  1. Especifica uma instância UpdateOneModel e uma instância UpdateManyModel em uma array. Esses modelos contêm instruções para atualizar documentos que representam filmes na coleção movies.

  2. Chama o método bulkWrite() na coleção movies e passa uma array de modelos como parâmetro.

  3. Imprime o número de documentos modificados.

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().

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

filter

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

collation

(Optional) The collation to use when sorting results. To learn more about collations, see the Collations guide.
Type: Object

hint

(Optional) The index to use for the operation. To learn more about indexes, see the Indexes on Collections guide.
Type: String or Object

Este exemplo executa as seguintes ações:

  1. Especifica uma instância DeleteOneModel e uma instância DeleteManyModel em uma array. Esses modelos contêm instruções para excluir documentos na coleção movies.

  2. Chama o método bulkWrite() na coleção movies e passa uma array de modelos como parâmetro.

  3. Imprime o número de documentos excluídos.

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

insertedCount

O número de documentos inseridos

matchedCount

O número de documentos correspondentes

modifiedCount

O número de documentos atualizados

upsertedCount

O número de documentos atualizados

deletedCount

O número de documentos excluídos

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

message

The error message.
Type: String

writeErrors

An array of errors that occurred during the bulk write operation.
Type: BulkWriteError[]

writeConcernErrors

Write concern errors that occurred during execution of the bulk write operation.
Type: WriteConnectionError[]

result

The results of any successful operations performed before the exception was thrown.
Type: BulkWriteResult[]

err

The underlying error object, which may contain more details.
Type: Error

Para saber mais sobre operações em massa, consulte Operações de gravação em massa no manual do MongoDB Server.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Exclua documentos