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 opera sobre una única colección.

Nota

Requiere MongoDB 8.0 o posterior.

Puede llamar bulkWrite() a en la Mongo() instancia actual utilizando 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 opciones para la operación.

Un documento en operations puede representar una de seis operaciones:

  • inserte uno

  • reemplazar uno

  • actualización uno

  • actualizar muchos

  • eliminar uno

  • eliminar muchos

Las siguientes secciones describen la sintaxis que debe 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

Nombre de la operación. Establézcalo 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 coincide 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

Nombre de la operación. Establézcalo en "updateOne" o "updateMany".

filter

Documento

El filtro que coincide con uno o más documentos que desea 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 es true, se crea un documento si no se encuentra ninguna coincidencia. El valor predeterminado 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

Nombre de la operación. Establézcalo en "replaceOne".

filter

Documento

El filtro que coincide con el documento que desea 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 eliminación.

name

String

Nombre de la operación. Establézcalo en "deleteOne" o "deleteMany".

filter

Documento

El selector de consultas para encontrar los documentos que se eliminarán.

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() genera resultados detallados. El valor predeterminado 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 en caso 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 insertados.

insertResults

Mapa de números 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 números enteros a documentos

Opcional. Representa los resultados de cada operación de actualización exitosa. Cada operación se representa mediante una clave entera, que contiene un documento con la información correspondiente. El documento incluye los siguientes campos:

  • matchedCount: entero. Representa el número de documentos coincidentes.

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

  • upsertedId: ObjectID. Representa el _id de cualquier documento insertado. Opcional.

  • didUpsert: booleano. true si se insertó un documento, false en caso contrario.

deleteResults

Mapa de números enteros a documentos

Opcional. Representa el resultado de cada operación de eliminación exitosa. Cada operación se representa mediante una clave entera, que contiene un documento con la información correspondiente. 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.collection.initializeUnorderedBulkOp

En esta página