Tip
MongoDB también proporciona la Mongo.bulkWrite() Método para realizar operaciones de escritura masiva.
Descripción
Bulk()Generador de operaciones masivas utilizado para crear una lista de operaciones de escritura que se ejecutan masivamente en una sola colección. Para instanciar el generador, utilice
db.collection.initializeOrderedBulkOp()el métododb.collection.initializeUnorderedBulkOp()o.
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.
Operaciones masivas ordenadas y desordenadas
El constructor puede construir la lista de operaciones como ordenadas o desordenadas.
Operaciones ordenadas
Con una lista de operaciones ordenadas, MongoDB ejecuta las operaciones de escritura en la lista de forma serializada. Si se produce un error durante el procesamiento de una de las operaciones de escritura, MongoDB regresará sin procesar las operaciones de escritura restantes de la lista.
Utilice para crear un generador para una lista ordenada de comandos de db.collection.initializeOrderedBulkOp() escritura.
Al ejecutar una ordered lista de operaciones, MongoDB las agrupa por operation type y contigüidad; es decir, las operacionescontiguas del mismo tipo se agrupan. Por ejemplo, si una lista ordenada tiene dos operaciones de inserción seguidas de una operación de actualización y otra de inserción, MongoDB agrupa las operaciones en tres grupos separados: el primero contiene las dos operaciones de inserción, el segundo contiene la operación de actualización y el tercero contiene la última operación de inserción. Este comportamiento está sujeto a cambios en futuras versiones.
Bulk() Las operaciones en mongosh y los métodos comparables en los controladores no tienen límite en el número de operaciones por grupo. Para ver cómo se agrupan las operaciones para la ejecución Bulk.getOperations() masiva, llame a después de la ejecución.
La ejecución de una ordered lista 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 anterior termine.
Operaciones desordenadas
Con una lista de operaciones desordenadas, MongoDB puede ejecutar las operaciones de escritura en paralelo, así como en un orden no determinista. Si se produce un error durante el procesamiento de una de las operaciones de escritura, MongoDB continuará procesando las restantes.
Utilice para crear un generador para una lista desordenada de comandos de db.collection.initializeUnorderedBulkOp() escritura.
Al ejecutar una lista de operaciones, MongoDB las agrupa. Con una operación masiva desordenada, las operaciones de la lista unordered unordered pueden reordenarse para mejorar el rendimiento. Por lo tanto, las aplicaciones no deberían depender del orden al realizar operaciones masivas.
Bulk() Las operaciones en mongosh y los métodos comparables en los controladores no tienen límite en el número de operaciones por grupo. Para ver cómo se agrupan las operaciones para la ejecución Bulk.getOperations() masiva, llame a después de la ejecución.
Transacciones
Bulk() puede usarse dentro de transacciones distribuidas.
Para las operaciones, la colección ya debe Bulk.insert() existir.
Bulk.find.upsert()Para, si la operación da como resultado una inserción y actualización, la colección ya debe existir.
No establezcas explícitamente el nivel de confirmación de escritura para la operación si se ejecuta en una transacción. Para usar el nivel de confirmación de escritura con transacciones, consulta Transacciones y nivel de confirmación de escritura.
Importante
En la mayoría de los casos, una transacción distribuida incurre en un costo de rendimiento mayor que las escrituras de documentos individuales, y la disponibilidad de transacciones distribuidas no debería ser un sustituto para un diseño de esquema efectivo. Para muchos casos, el modelo de datos desnormalizado (documento incrustado y matrices) seguirá siendo óptimo para tus datos y casos de uso. Es decir, en muchos casos, modelar tus datos de forma adecuada minimizará la necesidad de transacciones distribuidas.
Para consideraciones adicionales sobre el uso de transacciones (como el límite de tiempo de ejecución y el límite de tamaño del oplog), consulta también las consideraciones de producción.
Métodos
El constructor tiene los siguientes Bulk() métodos:
Nombre | Descripción |
|---|---|
Añade una operación de inserción a una lista de operaciones. | |
Especifica la condición del query para una operación de actualización o eliminación. | |
Añade una operación de borrado de múltiples documentos a una lista de operaciones. | |
Añade una operación de borrado de un solo documento a una lista de operaciones. | |
Un alias para | |
Un alias para | |
Añade una única operación de reemplazo de documento a una lista de operaciones. | |
Añade una única operación para actualizar un documento a una lista de operaciones. | |
Añade una operación de actualización de | |
Especifica | |
Ejecuta una lista de operaciones masivas. | |
Devuelve un arreglo de operaciones de guardado ejecutadas en el objeto de operaciones | |
Devuelve un documento JSON que contiene el número de operaciones y agrupaciones en el objeto de operaciones | |
Devuelve los resultados |