Definición
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.
Sintaxis
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 |
|---|---|---|
| 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. |
| 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.
Inserte uno
{ namespace: '<db.collection>', name: 'insertOne', document: Document }
Campo | Tipo | Descripción |
|---|---|---|
| String | La base de datos y la colección para la operación de inserción. |
| String | Nombre de la operación. Establézcalo en |
| Documento | El documento a insertar. |
Nota
Si el documento no incluye un campo _id, mongosh genera uno automáticamente.
Actualizar uno y actualizar muchos
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 |
|---|---|---|
| String | La base de datos y la colección para la operación de actualización. |
| String | Nombre de la operación. Establézcalo en |
| Documento | El filtro que coincide con uno o más documentos que desea actualizar. |
| Documento o conjunto de documentos | La actualización a realizar. |
| Arreglo de documentos | Opcional. Filtros para especificar qué elementos de la matriz actualizar si se actualiza un campo con valor de matriz. |
| Documento o string | Opcional. El índice que se utilizará para la operación. |
| Documento | (Opcional) La intercalación que se utilizará al ordenar los resultados. |
| Booleano | Opcional. Si es |
Reemplace uno
{ namespace: '<db>.<collection>', name: 'replaceOne', filter: Document, replacement: Document, hint?: Document | string, collation?: Document }
Campo | Tipo | Descripción |
|---|---|---|
| String | La base de datos y la colección para la operación de reemplazo. |
| String | Nombre de la operación. Establézcalo en |
| Documento | El filtro que coincide con el documento que desea actualizar. |
| Documento | El documento de reemplazo. |
| Documento o string | Opcional. El índice que se utilizará para la operación. |
| Documento | (Opcional) La intercalación que se utilizará al ordenar los resultados. |
Eliminar uno o muchos
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 |
|---|---|---|
| String | La base de datos y la colección para la operación de eliminación. |
| String | Nombre de la operación. Establézcalo en |
| Documento | El selector de consultas para encontrar los documentos que se eliminarán. |
| Documento o string | Opcional. El índice que se utilizará para la operación. |
| Documento | Opcional. La intercalación que se utilizará para la operación. |
opciones
{ ordered?: boolean, verboseResults?: boolean, bypassDocumentValidation?: boolean, let?: Document }
Campo | Tipo | Descripción |
|---|---|---|
| Booleano | (Opcional) Indica que MongoDB realiza la escritura masiva en el orden de los documentos que se proporcionan. Si |
| Booleano | (Opcional) Especifica si |
| Booleano | (Opcional) Especifica si la operación de escritura omite las reglas de validación del documento. El valor predeterminado es |
| Documento | (Opcional) Documento de nombres y valores de parámetros a los que puedes acceder mediante variables de agregación. |
Salida
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 |
|---|---|---|
| booleano |
|
| entero | Número de documentos insertados. |
| entero | Número de documentos coincidentes con el filtro. |
| entero | Número de documentos modificados. |
| entero | Número de documentos eliminados. |
| entero | Número de documentos insertados. |
| 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:
|
| 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:
|
| 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:
|
Ejemplos
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
usersactualiza un documento en la colección
theatersinserta 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) {} }