Definição
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.
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 | 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.
insertOne
{ namespace: '<db.collection>', name: 'insertOne', document: Document }
Campo | Tipo | Descrição |
---|---|---|
| String | O banco de dados e a coleção nos quais você deseja inserir o documento . |
| String | A operação. Defina como |
| 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
.
Atualizar um ou muitos
{ 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 em que você deseja atualizar documentos. |
| String | A operação. Defina como |
| Documento | O filtro que corresponde a um ou mais documentos que você deseja atualizar. Durante uma atualização de uma operação, o |
| Documento | A atualização a ser executada. |
| matriz de documentos | (Opcional) 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 | Especifica se o MongoDB cria um novo documento se nenhum documento corresponder ao filtro. Padrão é |
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 em que você deseja substituir documentos. |
| String | A operação. Defina como |
| Documento | O filtro que corresponde ao documento que você deseja atualizar. Durante uma operação de substituição, |
| 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
{ 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 nos quais você deseja excluir documentos. |
| String | A operação. Defina como |
| Documento | O filtro que corresponde ao documento que você deseja excluir. Durante uma operação de exclusão, 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. |
Opções
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 |
---|---|---|
| Boolean | (Opcional) Indica que o MongoDB executa a gravação em massa na ordem dos documentos que você fornece. Padrão é |
| 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
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 } } }