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 a Método
mongosh. Esta no es la documentación de un driver de lenguaje específico, 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, consulte 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 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 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();