Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

Mongo.bulkWrite() (método mongosh)

Mongo.bulkWrite(operations, options)

bulkWrite() executa várias operações de gravação em vários bancos de dados e coleções em uma única chamada. Esse método substitui db.collection.bulkWrite(), que executa várias operações de gravação em uma collection específica em uma única chamada.

Observação

Você só pode usar Mongo.bulkWrite() com o MongoDB 8.0 ou posterior.

Você pode chamar bulkWrite() na instância Mongo() atual usando a seguinte sintaxe:

db.getMongo().bulkWrite(
[
{
namespace: "<db1.collection1>",
name: "insertOne",
document: { ... }
},
{
namespace: "<db2.collection2>",
name: "replaceOne",
filter: { ... }
}
],
{
ordered: boolean,
verboseResults: boolean,
bypassDocumentValidation: boolean,
let: Document
}
)

Você também pode chamá-lo em uma instância Mongo diferente, como no exemplo a seguir:

const otherMongo = Mongo("<other connection string>");
otherMongo.bulkWrite([{ namespace: "<db.collection>", ... }]);

bulkWrite() aceita dois parâmetros:

Parâmetro
Tipo
Descrição

operations

matriz de documentos

Define uma array de operações de gravação. Cada documento na array representa uma operação de gravação que você deseja executar.

options

Documento

Define opções para a operação.

Um documento no operations pode representar uma de seis operações:

  • insertOne

  • replaceOne

  • UpdateOne

  • updateMany

  • Excluir um

  • deleteMany

As seções a seguir descrevem a sintaxe que você deve usar para documentos que representam cada operação.

{
namespace: '<db.collection>',
name: 'insertOne',
document: Document
}
Campo
Tipo
Descrição

namespace

String

O banco de dados e a coleção nos quais você deseja inserir o documento .

name

String

A operação. Defina como "insertOne" para uma operação de inserção.

document

Documento

O documento que você deseja inserir.

Observação

Se você não especificar um campo _id no documento para inserir, o mongosh gerará automaticamente um _id.

{
namespace: '<db>.<collection>',
name: 'updateOne' | 'updateMany',
filter: Document,
update: Document | Document[],
arrayFilters?: Document[],
hint?: Document | string,
collation?: Document,
upsert?: boolean
}
Campo
Tipo
Descrição

namespace

String

O banco de dados e a coleção em que você deseja atualizar documentos.

name

String

A operação. Defina como "updateOne" para uma operação de atualização única. Defina como "updateMany" para uma atualização de muitas operações.

filter

Documento

O filtro que corresponde a um ou mais documentos que você deseja atualizar. Durante uma atualização de uma operação, o mongosh atualiza somente o primeiro documento correspondente. Durante uma operação de atualização de muitos, mongosh atualiza todos os documentos que correspondem ao filtro.

update

Documento

A atualização a ser executada.

arrayFilters

matriz de documentos

(Opcional) Se você atualizar um campo com valor de array, arrayFilters será um conjunto de filtros que especificam a quais elementos de array uma atualização se aplica.

hint

Documento ou string

(Opcional) O índice a ser usado para a operação.

collation

Documento

(Opcional) O agrupamento a ser usado ao classificar os resultados.

upsert

Boolean

Especifica se o MongoDB cria um novo documento se nenhum documento corresponder ao filtro. Padrão é false.

{
namespace: '<db>.<collection>',
name: 'replaceOne',
filter: Document,
replacement: Document,
hint?: Document | string,
collation?: Document
}
Campo
Tipo
Descrição

namespace

String

O banco de dados e a coleção em que você deseja substituir documentos.

name

String

A operação. Defina como "replaceOne" para uma operação de substituição.

filter

Documento

O filtro que corresponde ao documento que você deseja atualizar. Durante uma operação de substituição, mongosh substitui apenas o primeiro documento correspondente.

replacement

Documento

O documento de substituição.

hint

Documento ou string

(Opcional) O índice a ser usado para a operação.

collation

Documento

(Opcional) O agrupamento a ser usado ao classificar os resultados.

{
namespace: '<db>.<collection>',
name: 'deleteOne' | 'deleteMany',
filter: Document,
hint?: Document | string,
collation?: Document
}
Campo
Tipo
Descrição

namespace

String

O banco de dados e a coleção nos quais você deseja excluir documentos.

name

String

A operação. Defina como "deleteOne" para uma operação de exclusão. Defina como "deleteMany" para uma operação de exclusão.

filter

Documento

O filtro que corresponde ao documento que você deseja excluir. Durante uma operação de exclusão, o mongosh exclui somente o primeiro documento correspondente. Durante uma operação de exclusão, mongosh exclui todos os documentos correspondentes.

hint

Documento ou string

(Opcional) O índice a ser usado para a operação.

collation

Documento

(Opcional) O agrupamento a ser usado ao classificar os resultados.

Você pode usar as seguintes opções com bulkWrite(). Você pode passar um documento para bulkWrite() que contenha as opções que você deseja usar. Este documento é opcional.

{
ordered?: boolean,
verboseResults?: boolean,
bypassDocumentValidation?: boolean,
let?: Document
}
Campo
Tipo
Descrição

ordered

Boolean

(Opcional) Indica que o MongoDB executa a gravação em massa na ordem dos documentos que você fornece. Padrão é true.

verboseResults

Boolean

(Opcional) Especifica se bulkWrite() gera resultados detalhados. O padrão é false.

bypassDocumentValidation

Boolean

(Opcional) Especifica se a operação de gravação ignora as regras de validação do documento . Padrão é false.

let

Documento

(Opcional) Documento de nomes e valores de parâmetros que você pode acessar com variáveis de agregação.

bulkWrite() retorna um objeto com os seguintes campos:

{
acknowledged: boolean,
insertedCount: int,
matchedCount: int,
modifiedCount: int,
deletedCount: int,
upsertedCount: int,
insertResults?: map(int, document),
updateResults?: map(int, document),
deleteResults?: map(int, document)
}
Campo
Tipo
Descrição

acknowledged

booleano

true se o servidor retornar uma confirmação, caso contrário false.

insertedCount

inteiro

Número de documentos inseridos.

matchedCount

inteiro

Número de documentos correspondentes por filtro.

modifiedCount

inteiro

Número de documentos modificados.

deletedCount

inteiro

Número de documentos excluídos.

upsertedCount

inteiro

Número de documentos atualizados.

insertResults

Mapa de inteiros para documentos

Opcional. Representa os resultados de cada operação de inserção bem-sucedida. Cada operação é representada por uma chave de número inteiro, que contém um documento com informações correspondentes à operação. O documento inclui o seguinte campo:

  • insertedId: ObjectId. Representa o _id do documento inserido.

updateResults

Mapa de inteiros para documentos

Opcional. Representa os resultados de cada operação de atualização bem-sucedida. Cada operação é representada por uma chave de número inteiro, que contém um documento com informações correspondentes à operação. O documento inclui os seguintes campos:

  • matchedCount: inteiro. Representa o número de documentos correspondentes.

  • modifiedCount: inteiro. Representa o número de documentos modificados.

  • upsertedId: ObjectId. Representa o _id de quaisquer documentos atualizados. Opcional.

  • didUpsert: booleano. true se um documento foi atualizado, false caso contrário.

deleteResults

Mapa de inteiros para documentos

Opcional. Representa os resultados de cada operação de exclusão bem-sucedida. Cada operação é representada por uma chave de número inteiro, que contém um documento com informações correspondentes à operação. O documento inclui o seguinte campo:

  • deletedCount: inteiro. Representa o número de documentos excluídos.

Este comando mongosh executa as seguintes operações em ordem:

  • insere um documento na coleção db.authors

  • insere um documento na coleção db.books

  • atualiza o documento anterior

db.getMongo().bulkWrite(
[
{
namespace: 'db.authors',
name: 'insertOne',
document: { name: 'Stephen King' }
},
{
namespace: 'db.books',
name: 'insertOne',
document: { name: 'It' }
},
{
namespace: 'db.books',
name: 'updateOne',
filter: { name: 'it' },
update: { $set: { year: 1986 } }
}
],
{
ordered: true,
bypassDocumentValidation: true
}
)

mongosh executa a gravação em massa para e retorna o seguinte documento:

{
acknowledged: true,
insertedCount: 2,
matchedCount: 1,
modifiedCount: 1,
deletedCount: 0,
upsertedCount: 0,
insertResults: { '1': { insertedId: ObjectId('67ed8ce8efd926c84cab7945') },
'2': { insertedId: ObjectId('67ed8ce8efd926c84cab7946') } }
updateResults: { '1': { matchedCount: 1, modifiedCount: 1, didUpsert: false } }
}

Voltar

db.collection.initializeUnorderedBulkOp

Nesta página