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 }
}
}
]
);