Tip
MongoDB también provee la db.collection.bulkWrite() método para realizar operaciones de escritura 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 generador de Bulk()operaciones.
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, consulte Comandos no compatibles.
Comportamiento
Orden de operación
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 operaciones ordered, MongoDB agrupa las operaciones por el operation type y la contigüidad; es decir, las operaciones contiguas del mismo tipo se agrupan juntas. Por ejemplo, si una lista ordenada tiene dos operaciones de inserción seguidas de una operación de actualización y luego 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 actualización y el tercer grupo contiene la última operación de inserción. Este comportamiento está sujeto a cambios en futuras versiones.
Las Bulk() operaciones en mongosh y métodos comparables en los drivers no tienen límite para el número de operaciones en un grupo. Para ver cómo se agrupan las operaciones para la ejecución masiva de operaciones, llamar a Bulk.getOperations() después de la ejecución.
Ejecutar una ordered lista de operaciones en una colección particionada generalmente será más lento que ejecutar una unordered lista, ya que con una lista ordenada, cada operación debe esperar que se complete la operación anterior.
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 Bulk() generador users de operaciones en la colección, agrega una serie de operaciones de escritura 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();