Este capítulo introduce las operaciones por lotes (bulkWrite) en los datos de documentos de MongoDB utilizando la consola de mongo. Aquí, las operaciones por lotes no solo se refieren a la actualización por lotes de documentos mencionada en capítulos anteriores, sino que también incluyen el soporte para realizar un lote de operaciones de escritura, incluyendo la inserción, actualización y eliminación de documentos.

La función bulkWrite se utiliza para operaciones por lotes en la consola de mongo.

Consejo: Las operaciones por lotes se utilizan a menudo en escenarios que requieren sincronización de datos por lotes.

Operaciones de escritura admitidas por la función bulkWrite

Las operaciones por lotes admiten las siguientes combinaciones de operaciones de escritura:

  • insertOne: Insertar un documento
  • updateOne: Actualizar un documento
  • updateMany: Actualizar un lote de documentos
  • replaceOne: Reemplazar un documento
  • deleteOne: Eliminar un documento
  • deleteMany: Eliminar un lote de documentos

Formato de sintaxis

db.collection.bulkWrite(
   [ <operación 1>, <operación 2>, ... ],
)

Explicación:

  • operación: Representa la configuración de la operación de escritura.
  • bulkWrite acepta una matriz de operaciones de escritura.

Ejemplo

Aquí hay un ejemplo completo que muestra la ejecución por lotes de un conjunto de operaciones de escritura de documentos.

db.inventory.bulkWrite(
      [
	     // Insertar un documento
         { insertOne :
            {
			// Contenido del documento
               "documento" :
               {
                  "_id" : 4, "char" : "Dithras", "class" : "bárbaro", "lvl" : 4
               }
            }
         },
         { insertOne :
            {
               "documento" :
               {
                  "_id" : 5, "char" : "Taeln", "class" : "luchador", "lvl" : 3
               }
            }
         },
		 // Actualizar un documento, updateMany es similar para actualizar un lote de documentos
         { updateOne :
            {
			   // Condición de actualización
               "filtro" : { "char" : "Eldon" },
			   // Contenido de actualización
               "actualización" : { $set : { "estado" : "Lesión Crítica" } }
            }
         },
		 // Eliminar un documento, deleteMany es similar para eliminar varios documentos
         { deleteOne :
		    // Condición de eliminación
            { "filtro" : { "char" : "Brisbane" } }
         },
		 // Reemplazar un documento
         { replaceOne :
            {
			    // Condición de reemplazo
               "filtro" : { "char" : "Meldane" },
			   // Contenido de reemplazo
               "reemplazo" : { "char" : "Tanys", "class" : "oráculo", "lvl" : 4 }
            }
         }
      ]
   );