Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Mongo.bulkWrite() (método mongosh)

Mongo.bulkWrite(operations, options)

Mongo.bulkWrite() realiza múltiples operaciones de escritura en múltiples bases de datos y colecciones en una sola llamada, a diferencia de db.collection.bulkWrite() que funciona en una única colección.

Nota

Requiere MongoDB 8.0 o posterior.

Puedes llamar a bulkWrite() en la siguiente instancia Mongo() usando la siguiente sintaxis:

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

También puedes llamarlo en una instancia Mongo diferente, como en el siguiente ejemplo:

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

bulkWrite() acepta dos parámetros:

Parameter
Tipo
Descripción

operations

Arreglo de documentos

Define una matriz de operaciones de escritura. Cada documento de la matriz representa una operación de escritura que se desea ejecutar.

options

Documento

Define las opciones para la operación.

Un documento en operations puede representar una de seis operaciones:

  • Inserte uno

  • reemplazar uno

  • actualización uno

  • Actualiza muchos

  • eliminar uno

  • deleteMany

Las siguientes secciones describen la sintaxis que debes utilizar para los documentos que representan cada operación.

{
namespace: '<db.collection>',
name: 'insertOne',
document: Document
}
Campo
Tipo
Descripción

namespace

String

La base de datos y la colección para la operación de inserción.

name

String

El nombre de la operación. Establezca en "insertOne".

document

Documento

El documento a insertar.

Nota

Si el documento no incluye un campo _id, mongosh genera uno automáticamente.

updateOne actualiza el primer documento que coincida con el filtro. updateMany actualiza todos los documentos que coinciden con el filtro.

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

namespace

String

La base de datos y la colección para la operación de actualización.

name

String

El nombre de la operación. Defínelos en "updateOne" o "updateMany".

filter

Documento

El filtro que coincide con uno o más documentos que pretendes actualizar.

update

Documento o conjunto de documentos

La actualización a realizar.

arrayFilters

Arreglo de documentos

Opcional. Filtros para especificar qué elementos de la matriz actualizar si se actualiza un campo con valor de matriz.

hint

Documento o string

opcional. El índice que se utilizará para la operación.

collation

Documento

(Opcional) La intercalación que se utilizará al ordenar los resultados.

upsert

Booleano

opcional. Si true, crea un documento si no se encuentra ninguna coincidencia. Por defecto, es false.

{
namespace: '<db>.<collection>',
name: 'replaceOne',
filter: Document,
replacement: Document,
hint?: Document | string,
collation?: Document
}
Campo
Tipo
Descripción

namespace

String

La base de datos y la colección para la operación de reemplazo.

name

String

El nombre de la operación. Establezca en "replaceOne".

filter

Documento

El filtro que coincide con el documento que deseas actualizar.

replacement

Documento

El documento de reemplazo.

hint

Documento o string

opcional. El índice que se utilizará para la operación.

collation

Documento

(Opcional) La intercalación que se utilizará al ordenar los resultados.

deleteOne borra el primer documento que coincida con el filtro. deleteMany borra todos los documentos que coinciden con el filtro.

{
namespace: '<db>.<collection>',
name: 'deleteOne' | 'deleteMany',
filter: Document,
hint?: Document | string,
collation?: Document
}
Campo
Tipo
Descripción

namespace

String

La base de datos y la colección para la operación de borrado.

name

String

El nombre de la operación. Defínelos en "deleteOne" o "deleteMany".

filter

Documento

El selector de query para hacer coincidir documentos para borrar.

hint

Documento o string

opcional. El índice que se utilizará para la operación.

collation

Documento

opcional. La intercalación que se utilizará para la operación.

{
ordered?: boolean,
verboseResults?: boolean,
bypassDocumentValidation?: boolean,
let?: Document
}
Campo
Tipo
Descripción

ordered

Booleano

(Opcional) Indica que MongoDB realiza la escritura masiva en el orden de los documentos que se proporcionan. Si true, se detiene en el primer error. Si false, continúa procesando las operaciones restantes incluso si algunas fallan. Por defecto es true.

verboseResults

Booleano

(Opcional) Especifica si bulkWrite() muestra resultados detallados. Por defecto es false.

bypassDocumentValidation

Booleano

(Opcional) Especifica si la operación de escritura omite las reglas de validación del documento. El valor predeterminado es false.

let

Documento

(Opcional) Documento de nombres y valores de parámetros a los que puedes acceder mediante variables de agregación.

bulkWrite() devuelve un objeto con los siguientes 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
Descripción

acknowledged

booleano

true si el servidor devuelve un acuse de recibo, false de lo contrario.

insertedCount

entero

Número de documentos insertados.

matchedCount

entero

Número de documentos coincidentes con el filtro.

modifiedCount

entero

Número de documentos modificados.

deletedCount

entero

Número de documentos eliminados.

upsertedCount

entero

Número de documentos actualizados.

insertResults

Mapa de enteros a documentos

Opcional. Representa el resultado de cada inserción realizada correctamente. Cada operación se representa mediante una clave entera, que contiene un documento con la información correspondiente. El documento incluye el siguiente campo:

  • insertedId: ObjectId. Representa el _id del documento insertado.

updateResults

Mapa de enteros a documentos

opcional. Representa los resultados de cada operación de actualización exitosa. Cada operación está representada por una clave entera, que contiene un documento con información correspondiente a la operación. El documento incluye los siguientes campos:

  • matchedCount:entero. Representa la cantidad de documentos coincidentes.

  • modifiedCount:entero. Representa el número de documentos modificados.

  • upsertedId: ObjectId. Representa la _id de cualquier documento actualizado. opcional.

  • didUpsert: booleano. true si se guardó el documento, false en caso contrario.

deleteResults

Mapa de enteros a documentos

opcional. Representa los resultados de cada operación de borrar exitosa. Cada operación está representada por una clave entera, que contiene un documento con información correspondiente a la operación. El documento incluye el siguiente campo:

  • deletedCount:entero. Representa el número de documentos eliminados.

Este ejemplo utiliza Mongo.bulkWrite() para realizar las siguientes operaciones en orden en la base de datos sample_mflix.

  • inserta un documento en la colección users

  • actualiza un documento en la colección theaters

  • inserta otro documento en la colección users

db.getMongo().bulkWrite(
[
{
namespace: 'sample_mflix.users',
name: 'insertOne',
document: {
name: 'Cersei Lannister',
email: 'cersei.l@example.com',
password: '$2b$12$UREFwsRUoyF0CRqGNK0LzO0HM/jLhgUCNNIJ9RJAqMUQ74crlJ1Vu'
}
},
{
namespace: 'sample_mflix.theaters',
name: 'updateOne',
filter: { theaterId: 1000 },
update: { $set: {
"location.address.street1": "350 W Market",
"location.address.city": "Bloomington"
} }
},
{
namespace: 'sample_mflix.users',
name: 'insertOne',
document: {
name: 'Sansa Stark',
email: 'sansa.s@example.com',
password: '$2b$12$UREFwsRUoyF0CRqGNK0LzO0HM/jLhgUCNNIJ9RJAqMUQ74crlJ1Vu'
}
}
],
{
ordered: true,
bypassDocumentValidation: true,
verboseResults: true
}
)

mongosh realiza la escritura masiva en orden y devuelve el siguiente documento:

{
acknowledged: true,
insertedCount: 2,
matchedCount: 1,
modifiedCount: 1,
deletedCount: 0,
upsertedCount: 0,
insertResults: Map(2) {
0 => { insertedId: "..." },
2 => { insertedId: "..." }
},
updateResults: Map(1) {
1 => { matchedCount: 1, modifiedCount: 1, didUpsert: false }
},
deleteResults: Map(0) {}
}

Volver

db.colección.initializeUnorderedBulkOp

En esta página