Tip
MongoDB también proporciona el método Mongo.bulkWrite() para realizar operaciones de guardar masiva.
Definición
db.collection.initializeOrderedBulkOp()Importante
Método mongosh
Esta página documenta un método
mongosh. Esta no es la documentación para un driver específico de lenguaje, como Node.js.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del lenguaje.
Inicializa y devuelve un nuevo generador de operaciones
Bulk()para una colección. El constructor crea una lista ordenada de operaciones de guardar que MongoDB ejecuta en lote.Devuelve: nuevo objeto constructor de operaciones
Bulk().
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles.
Comportamiento
Orden de operaciones
Con una lista de operaciones ordenadas, MongoDB ejecuta las operaciones de guardar en la lista de forma secuencial.
Ejecución de operaciones
Al ejecutar una lista de ordered operaciones, MongoDB agrupa las operaciones por la operation type y la contigüidad; es decir, las operaciones contiguas del mismo tipo se agrupan. Por ejemplo, si una lista ordenada tiene dos operaciones de inserción seguidas de una operación de actualizar seguidas de otra operación de inserción, MongoDB agrupa las operaciones en tres grupos separados: el primer grupo contiene las dos operaciones de inserción, el segundo grupo contiene la operación de actualizar, y el tercer grupo contiene la última operación de inserción. Este comportamiento está sujeto a cambios en futuras versiones.
Bulk() operaciones en mongosh y los métodos comparables de los controladores no tienen un límite para la cantidad de operaciones en un grupo. Para ver cómo se agrupan las operaciones para la ejecución de operaciones masivas, llame Bulk.getOperations() después de la ejecución.
La ejecución de una lista ordered de operaciones en una colección particionada generalmente será más lenta que la ejecución de una lista unordered, ya que con una lista ordenada, cada operación debe esperar a que la operación anterior termine.
Error Handling
Si se produce un error durante el procesamiento de una de las operaciones de escritura, MongoDB devolverá sin procesar las operaciones de escritura restantes en la lista.
Ejemplos
Lo siguiente inicializa un generador de operaciones Bulk() en la colección users, añade una serie de operaciones de guardar y ejecuta las operaciones:
var bulk = db.users.initializeOrderedBulkOp(); bulk.insert( { user: "abc123", status: "A", points: 0 } ); bulk.insert( { user: "ijk123", status: "A", points: 0 } ); bulk.insert( { user: "mop123", status: "P", points: 0 } ); bulk.find( { status: "D" } ).delete(); bulk.find( { status: "P" } ).update( { $set: { comment: "Pending" } } ); bulk.execute();