Menu Docs
Página inicial do Docs
/ /

Mongo.bulkWrite() (método mongosh)

Mongo.bulkWrite(operations, options)

Mongo.bulkWrite() executa diversas operações de gravação em vários bancos de dados e coleções em uma única chamada, ao contrário db.collection.bulkWrite() do que opera em uma única coleção.

Observação

Exige 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 para a operação de inserção.

name

String

O nome da operação. Defina como "insertOne".

document

Documento

O documento a inserir.

Observação

Se o documento não incluir um campo _id, o mongosh gera automaticamente um.

updateOne atualiza o primeiro documento correspondente ao filtro. updateMany atualiza todos os documentos correspondentes ao filtro.

{
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 para a operação de atualização.

name

String

O nome da operação. Defina como "updateOne" ou "updateMany".

filter

Documento

O filtro que corresponde a um ou mais documentos que você deseja atualizar.

update

Documento ou array de documentos

A atualização a ser executada.

arrayFilters

matriz de documentos

Opcional. Filtros para especificar quais elementos de array atualizar se você atualizar um campo com valor de array.

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

Opcional. Se true, crie um documento se nenhuma correspondência for encontrada. O 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 coleta para a operação de substituição.

name

String

O nome da operação. Defina como "replaceOne".

filter

Documento

O filtro que corresponde ao documento que você deseja atualizar.

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.

deleteOne exclui o primeiro documento correspondente ao filtro. deleteMany exclui todos os documentos correspondentes ao filtro.

{
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 coleta para a operação de exclusão.

name

String

O nome da operação. Defina como "deleteOne" ou "deleteMany".

filter

Documento

O seletor de query para combinar documentos a serem excluídos.

hint

Documento ou string

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

collation

Documento

Opcional. O agrupamento a ser usado para a operação.

{
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. Se true, para no primeiro erro. Se false, continua processando as operações restantes mesmo que algumas operações falhem. O 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 exemplo usa Mongo.bulkWrite() para executar 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