Definição
Mongo.bulkWrite() performs multiple write operations across multiple databases and collections in a single call, unlike db.collection.bulkWrite() which operates on a single collection.
Observação
Exige MongoDB 8.0 ou posterior.
Para usar bulkWrite() em uma transação multidocumento, chame Session.bulkWrite(). Ele aceita os mesmos parâmetros que Mongo.bulkWrite() e associa a operação à sessão.
Sintaxe
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 |
|---|---|---|
| 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. |
| Documento | Defines options for the operation. |
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.
insertOne
{ namespace: '<db.collection>', name: 'insertOne', document: Document }
Campo | Tipo | Descrição |
|---|---|---|
| String | O banco de dados e a coleção para a operação de inserção. |
| String | O nome da operação. Defina como |
| Documento | O documento a inserir. |
Observação
Se o documento não incluir um campo _id, o mongosh gera automaticamente um.
updateOne e updateMany
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 |
|---|---|---|
| String | O banco de dados e a coleção para a operação de atualização. |
| String | O nome da operação. Defina como |
| Documento | O filtro que corresponde a um ou mais documentos que você deseja atualizar. |
| Documento ou array de documentos | A atualização a ser executada. |
| matriz de documentos | Opcional. Filtros para especificar quais elementos de array atualizar se você atualizar um campo com valor de array. |
| Documento ou string | Opcional. O índice a ser usado para a operação. |
| Documento | (Opcional) O agrupamento a ser usado ao classificar os resultados. |
| Boolean | Opcional. Se |
replaceOne
{ namespace: '<db>.<collection>', name: 'replaceOne', filter: Document, replacement: Document, hint?: Document | string, collation?: Document }
Campo | Tipo | Descrição |
|---|---|---|
| String | O banco de dados e a coleção para a operação de substituição. |
| String | O nome da operação. Defina como |
| Documento | O filtro que corresponde ao documento que você deseja atualizar. |
| Documento | O documento de substituição. |
| Documento ou string | Opcional. O índice a ser usado para a operação. |
| Documento | (Opcional) O agrupamento a ser usado ao classificar os resultados. |
Excluir um ou muitos
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 |
|---|---|---|
| String | O banco de dados e a coleção para a operação de exclusão. |
| String | O nome da operação. Defina como |
| Documento | O seletor de query para combinar documentos a serem excluídos. |
| Documento ou string | Opcional. O índice a ser usado para a operação. |
| Documento | Opcional. O agrupamento a ser usado para a operação. |
Opções
{ ordered?: boolean, verboseResults?: boolean, bypassDocumentValidation?: boolean, let?: Document }
Campo | Tipo | Descrição |
|---|---|---|
| Boolean | (opcional) Indica que o MongoDB executa a gravar em massa na ordem dos documentos que você fornece. Se |
| Boolean | (Opcional) Especifica se |
| Boolean | (Opcional) Especifica se a operação de gravação ignora as regras de validação do documento . Padrão é |
| Documento | (Opcional) Documento de nomes e valores de parâmetros que você pode acessar com variáveis de agregação. |
Saída
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 |
|---|---|---|
| booleano |
|
| inteiro | Número de documentos inseridos. |
| inteiro | Número de documentos correspondentes por filtro. |
| inteiro | Número de documentos modificados. |
| inteiro | Número de documentos excluídos. |
| inteiro | Número de documentos atualizados. |
| 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:
|
| 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:
|
| 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:
|
Exemplos
This example uses Mongo.bulkWrite() to perform the following operations in order:
insere um documento na coleção
db.authorsinsere um documento na coleção
db.booksatualiza 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 } } }