Docs Menu
Docs Home
/ /

Bulk.execute() (método mongosh)

Tip

MongoDB también proporciona db.collection.bulkWrite() para realizar operaciones de escritura masiva.

Bulk.execute()

Ejecuta la lista de operaciones creada por el Bulk() generador de operaciones.

Bulk.execute() acepta el siguiente parámetro:

Parameter
Tipo
Descripción

writeConcern

Documento

Opcional. Escribir el documento de interés para la operación masiva en su conjunto. Omitir el valor predeterminado. Para un mongod servidor independiente, el interés de escritura { w: majority } predeterminado es. Con un conjunto de réplicas, el interés de escritura predeterminado es,{ w: majority } a menos que se modifique como parte de la configuración del conjunto de réplicaso, potencialmente, si el conjunto de réplicas contiene varios árbitros.

Consulte Anular preocupación de escritura predeterminada para ver un ejemplo.

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.

Devuelve:Un objeto que contiene el estado de la BulkWriteResult() operación.

Tras la ejecución, no se puede volver a ejecutar el objeto sin reinicializarlo.Bulk() Consulte db.collection.initializeUnorderedBulkOp() db.collection.initializeOrderedBulkOp()y.

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.

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.

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.

Bulk() se puede utilizar 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.

Lo siguiente inicializa un Bulk() generador items de operaciones en la colección, agrega una serie de operaciones de inserción y ejecuta las operaciones:

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", status: "A", defaultQty: 500, points: 5 } );
bulk.insert( { item: "ijk123", status: "A", defaultQty: 100, points: 10 } );
bulk.execute( );

La operación devuelve el siguiente BulkWriteResult() objeto:

BulkWriteResult({
acknowledged: true,
insertedCount: 2,
insertedIds: {
'0': ObjectId("64e61e3b84ff8808cd43a92c"),
'1': ObjectId("64e61e3b84ff8808cd43a92d")
},
matchedCount: 0,
modifiedCount: 0,
deletedCount: 0,
upsertedCount: 0,
upsertedIds: {}
})

Para obtener más información sobre el objeto de retorno, consulte. Para obtener más información sobre los lotes BulkWriteResult() ejecutados,Bulk.getOperations() consulte.

La siguiente operación en un conjunto de réplicas especifica una preocupación de escritura de "w: 1" con un wtimeout de 5000 milisegundos de modo que el método retorna después de que las escrituras se propagan a una mayoría de los miembros del conjunto de réplicas con derecho a voto o el método expira después de cinco segundos.

var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "efg123", status: "A", defaultQty: 100, points: 0 } );
bulk.insert( { item: "xyz123", status: "A", defaultQty: 100, points: 0 } );
bulk.execute( { w: 1, wtimeout: 5000 } );

La operación devuelve el siguiente BulkWriteResult() objeto:

BulkWriteResult({
acknowledged: true,
insertedCount: 2,
insertedIds: {
'0': ObjectId("64e61e3b84ff8808cd43a92c"),
'1': ObjectId("64e61e3b84ff8808cd43a92d")
},
matchedCount: 0,
modifiedCount: 0,
deletedCount: 0,
upsertedCount: 0,
upsertedIds: {}
})

Tip

Consulte:

Bulk() para obtener una lista de los métodos disponibles para operaciones masivas.

Volver

A granel

En esta página