Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Operaciones de escritura masiva

En esta guía, puedes aprender a realizar múltiples operaciones de escritura en una sola llamada a la base de datos utilizando operaciones de escritura en bloque.

Imaginemos un escenario en el que queremos insertar un documento en una colección, actualizar otros documentos y, finalmente, eliminar uno. Si utilizamos funciones individuales, cada operación requiere una consulta a la base de datos. En cambio, podemos usar una operación por lotes para reducir el número de consultas.

El controlador C proporciona dos API de escritura masiva: mongoc_bulkwrite_t y mongoc_bulk_operation_t.

Nota

Si utiliza MongoDB Server 8.0 o posterior, le recomendamos usar mongoc_bulkwrite_t. Esta función puede realizar operaciones en varias colecciones o bases de datos en una sola llamada, mientras que mongoc_bulk_operation_t solo puede operar en una colección por llamada.

Los ejemplos en esta guía utilizan la colección restaurants en la base de datos sample_restaurants de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta la guía MongoDB Primeros Pasos.

Las operaciones de escritura masiva contienen una o más operaciones de escritura. Para usar una escritura masiva, cree el tipo de escritura masiva, llame a la función de adición correspondiente para cada operación que desee realizar y, a continuación, ejecute la escritura masiva.

Para crear una operación de escritura masiva, llame a la función mongoc_client_bulkwrite_new(). Esta función devuelve un valor de tipo mongoc_bulkwrite_t que puede usar para almacenar instrucciones sobre las operaciones de escritura que desea realizar. Pase un valor mongoc_client_t como parámetro para especificar el cliente para la escritura masiva.

mongoc_bulkwrite_t *bulk = mongoc_client_bulkwrite_new(client);

Puedes agregar operaciones de inserción, actualización, reemplazo y eliminación a tu valor mongoc_bulkwrite_t.

Para realizar una operación de inserción, agregue las instrucciones de inserción al valor mongoc_bulkwrite_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulkwrite_append_insertone(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

self

El valor mongoc_bulkwrite_t al que se añadirá la operación.

ns

El espacio de nombres en el que se insertará el documento, especificado como <database>.<collection>.

document

El documento a insertar.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Recibe detalles de error si la función devuelve false.

El siguiente ejemplo añade una operación de inserción a la escritura masiva:

bson_t *insert_doc = BCON_NEW(
"name", BCON_UTF8("Mongo's Deli"),
"cuisine", BCON_UTF8("Sandwiches"),
"borough", BCON_UTF8("Manhattan"),
"restaurant_id", BCON_UTF8("1234")
);
bson_error_t error;
if (!mongoc_bulkwrite_append_insertone(
bulk, "sample_restaurants.restaurants", insert_doc, NULL, &error)) {
fprintf(stderr, "Failed to add insert operation: %s\n", error.message);
}
bson_destroy(insert_doc);

Para insertar varios documentos, llame a la función mongoc_bulkwrite_append_insertone() para cada documento.

Para realizar una operación de actualización, agregue las instrucciones de actualización al valor mongoc_bulkwrite_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulkwrite_append_updateone(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

self

El valor mongoc_bulkwrite_t al que se añadirá la operación.

ns

El espacio de nombres que contiene los documentos a actualizar, especificado como <database>.<collection>.

filter

El filtro de consulta que selecciona el documento que se va a actualizar.

update

La actualización se aplicará al documento coincidente.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Recibe detalles de error si la función devuelve false.

El siguiente ejemplo añade una operación de actualización a la escritura masiva:

bson_t *filter_doc = BCON_NEW("name", BCON_UTF8("Mongo's Deli"));
bson_t *update_doc = BCON_NEW("$set", "{", "cuisine", BCON_UTF8("Sandwiches and Salads"), "}");
bson_error_t error;
if (!mongoc_bulkwrite_append_updateone(
bulk, "sample_restaurants.restaurants", filter_doc, update_doc, NULL, &error)) {
fprintf(stderr, "Failed to add update operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(update_doc);

Para actualizar varios documentos, llame a la función mongoc_bulkwrite_append_updatemany() y pase los parámetros que se muestran en el ejemplo anterior. Esto indica al controlador que actualice todos los documentos que coincidan con el filtro de consulta.

El siguiente ejemplo agrega una operación de actualización múltiple a la escritura masiva:

bson_t *filter_doc = BCON_NEW("name", BCON_UTF8("Mongo's Deli"));
bson_t *update_doc = BCON_NEW("$set", "{", "cuisine", BCON_UTF8("Sandwiches and Salads"), "}");
bson_error_t error;
if (!mongoc_bulkwrite_append_updatemany(
bulk, "sample_restaurants.restaurants", filter_doc, update_doc, NULL, &error)) {
fprintf(stderr, "Failed to add update operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(update_doc);

Una operación de reemplazo elimina todos los campos y valores de un documento específico y los sustituye por otros nuevos. Para realizar una operación de reemplazo, añada las instrucciones de reemplazo al valor mongoc_bulkwrite_t, lo que pondrá la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulkwrite_append_replaceone(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

self

El valor mongoc_bulkwrite_t al que se añadirá la operación.

ns

El espacio de nombres que contiene los documentos a reemplazar, especificado como <database>.<collection>.

filter

El filtro de consulta que selecciona el documento que se va a reemplazar.

replacement

El documento que reemplaza al documento coincidente.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Recibe detalles de error si la función devuelve false.

El siguiente ejemplo agrega una operación de reemplazo a la escritura masiva:

bson_t *filter_doc = BCON_NEW("restaurant_id", BCON_UTF8("1234"));
bson_t *replace_doc = BCON_NEW(
"name", BCON_UTF8("Mongo's Deli"),
"cuisine", BCON_UTF8("Sandwiches and Salads"),
"borough", BCON_UTF8("Brooklyn"),
"restaurant_id", BCON_UTF8("5678")
);
bson_error_t error;
if (!mongoc_bulkwrite_append_replaceone(
bulk, "sample_restaurants.restaurants", filter_doc, replace_doc, NULL, &error)) {
fprintf(stderr, "Failed to add replace operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(replace_doc);

Para reemplazar varios documentos, llame a la función mongoc_bulkwrite_append_replaceone() para cada documento.

Para realizar una operación de eliminación, agregue las instrucciones de eliminación al valor mongoc_bulkwrite_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulkwrite_append_deleteone(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

self

El valor mongoc_bulkwrite_t al que se añadirá la operación.

ns

El espacio de nombres que contiene los documentos a eliminar, especificado como <database>.<collection>.

filter

El filtro de consulta que selecciona el documento que se va a eliminar.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Recibe detalles de error si la función devuelve false.

El siguiente ejemplo añade una operación de eliminación a la escritura masiva:

bson_t *filter_doc = BCON_NEW("name", BCON_UTF8("Mongo's Deli"));
bson_error_t error;
if (!mongoc_bulkwrite_append_deleteone(
bulk, "sample_restaurants.restaurants", filter_doc, NULL, &error)) {
fprintf(stderr, "Failed to add delete operation: %s\n", error.message);
}
bson_destroy(filter_doc);

Para eliminar varios documentos, llame a la función mongoc_bulkwrite_append_deletemany() y pase los parámetros que se muestran en el ejemplo anterior. Esto le indica al controlador que elimine todos los documentos que coincidan con el filtro de consulta.

El siguiente ejemplo agrega una operación de eliminación múltiple:

bson_t *filter_doc = BCON_NEW("borough", BCON_UTF8("Manhattan"));
bson_error_t error;
if (!mongoc_bulkwrite_append_deletemany(
bulk, "sample_restaurants.restaurants", filter_doc, NULL, &error)) {
fprintf(stderr, "Failed to add delete operation: %s\n", error.message);
}
bson_destroy(filter_doc);

La función mongoc_bulkwrite_execute() acepta los siguientes parámetros:

Parameter
Descripción

self

El valor mongoc_bulkwrite_t que contiene las instrucciones para cada operación de escritura.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

Si la operación se realiza correctamente, la función devuelve un valor mongoc_bulkwritereturn_t que contiene los resultados de la operación. En caso contrario, el valor devuelto incluye un valor mongoc_bulkwriteexception_t con los detalles del error.

El siguiente ejemplo muestra cómo escribir documentos de forma masiva:

bson_error_t error;
mongoc_bulkwrite_t *bulk = mongoc_client_bulkwrite_new(client);
bson_t *insert_doc = BCON_NEW(
"<field name 1>", BCON_UTF8("<value 1>"),
"<field name 2>", BCON_UTF8("<value 2>"),
"<field name 3>", BCON_UTF8("<value 3>"),
"<field name 4>", BCON_UTF8("<value 4>")
);
mongoc_bulkwrite_append_insertone(
bulk, "sample_restaurants.restaurants", insert_doc, NULL, &error);
bson_destroy(insert_doc);
bson_t *query = BCON_NEW("<field to match>", BCON_UTF8("<value to match>"));
bson_t *update = BCON_NEW("$set", "{", "<field name>", BCON_UTF8("<value>"), "}");
mongoc_bulkwrite_append_updateone(
bulk, "sample_restaurants.restaurants", query, update, NULL, &error);
bson_destroy(query);
bson_destroy(update);
mongoc_bulkwritereturn_t result = mongoc_bulkwrite_execute(bulk, NULL);
if (result.exc) {
if (mongoc_bulkwriteexception_error(result.exc, &error)) {
fprintf(stderr, "Bulk write error: %s\n", error.message);
}
}
mongoc_bulkwriteresult_destroy(result.res);
mongoc_bulkwriteexception_destroy(result.exc);
mongoc_bulkwrite_destroy(bulk);

El siguiente ejemplo llama a la función mongoc_bulkwrite_execute() para realizar las operaciones de inserción, actualización, reemplazo y eliminación.

bson_error_t error;
mongoc_bulkwritereturn_t result = mongoc_bulkwrite_execute(bulk, NULL);
if (result.exc) {
if (mongoc_bulkwriteexception_error(result.exc, &error)) {
fprintf(stderr, "Bulk write error: %s\n", error.message);
}
} else if (result.res) {
printf("Inserted: %" PRId64 " document(s)\n",
mongoc_bulkwriteresult_insertedcount(result.res));
printf("Matched: %" PRId64 " document(s)\n",
mongoc_bulkwriteresult_matchedcount(result.res));
printf("Modified: %" PRId64 " document(s)\n",
mongoc_bulkwriteresult_modifiedcount(result.res));
printf("Deleted: %" PRId64 " document(s)\n",
mongoc_bulkwriteresult_deletedcount(result.res));
}
mongoc_bulkwriteresult_destroy(result.res);
mongoc_bulkwriteexception_destroy(result.exc);

Si falla alguna operación de escritura, el controlador C informa de los errores en el valor de retorno y no realiza ninguna otra operación.

El siguiente ejemplo crea un valor mongoc_bulkwriteopts_t, establece ordered en false y pasa las opciones a mongoc_bulkwrite_execute():

mongoc_bulkwriteopts_t *opts = mongoc_bulkwriteopts_new();
mongoc_bulkwriteopts_set_ordered(opts, false);
mongoc_bulkwrite_t *bulk = mongoc_client_bulkwrite_new(client);
// Perform bulk operation
mongoc_bulkwritereturn_t result = mongoc_bulkwrite_execute(bulk, opts);
mongoc_bulkwriteresult_destroy(result.res);
mongoc_bulkwriteexception_destroy(result.exc);
mongoc_bulkwriteopts_destroy(opts);
mongoc_bulkwrite_destroy(bulk);

Si alguna de las operaciones de guardado en una escritura masiva desordenada falla, el driver C informa de los errores solo después de intentar todas las operaciones.

Nota

Las operaciones masivas no ordenadas no ofrecen garantías del orden de ejecución. El orden puede diferir de la manera en que los enumeras para optimizar el tiempo de ejecución.

La siguiente tabla describe las opciones que puede especificar en el valor mongoc_bulkwriteopts_t para una operación de escritura masiva:

Opción
Descripción

ordered

Si true, el driver realiza las operaciones de guardado en el orden proporcionado. Si se produce un error, no se intentarán las operaciones restantes.

Si false, el driver realiza las operaciones en un orden arbitrario e intenta realizar todas las operaciones.
Se establece por defecto en true.

bypassdocumentvalidation

Si true, permite que las operaciones de escritura opten por no realizar la validación a nivel de documento.

writeconcern

Especifica el nivel de confirmación de escritura (write concern) para la operación en lote. Para obtener más información, consulta nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.

comment

Anexa un comentario a la operación. Para obtener más información, consulta la guía sobre los campos del comando borrar en el manual del MongoDB Server.

let

Especifica un documento con una lista de valores para mejorar la legibilidad de la operación. Los valores deben ser expresiones constantes o cerradas que no hagan referencia a campos de documentos. Para obtener más información, consulta la instrucción let en el manual de MongoDB Server.

verboseresults

Si true, los resultados devueltos incluyen resultados detallados para cada operación exitosa.

Nota

Utilice mongoc_bulk_operation_t cuando utilice una versión del controlador C anterior a 1.28.0, cuando se dirija a una versión del servidor MongoDB anterior a 8.0, o cuando solo necesite escribir en una única colección.

Las operaciones de escritura masiva contienen una o más operaciones de escritura. Para usar una escritura masiva, cree el tipo de escritura masiva, llame a la función de adición correspondiente para cada operación que desee realizar y, a continuación, ejecute la escritura masiva.

Antes de ejecutar una operación de escritura masiva, llama la función mongoc_collection_create_bulk_operation_with_opts(). Esta función devuelve un valor de tipo mongoc_bulk_operation_t que puede usar para almacenar instrucciones sobre qué escrituras masivas realizar.

La función mongoc_collection_create_bulk_operation_with_opts() acepta los siguientes parámetros:

Parameter
Descripción

collection

La colección a modificar.

opts

Opciones para personalizar la operación, o NULL.

El siguiente ejemplo llama a la función mongoc_collection_create_bulk_operation_with_opts(), pasando la colección de restaurantes como parámetro:

mongoc_bulk_operation_t *bulk =
mongoc_collection_create_bulk_operation_with_opts(collection, NULL);

Puedes agregar operaciones de inserción, actualización, reemplazo y eliminación a tu valor mongoc_bulk_operation_t.

Para realizar una operación de inserción, agregue las instrucciones de inserción al valor mongoc_bulk_operation_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulk_operation_insert_with_opts(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

bulk

El valor mongoc_bulk_operation_t al que se añadirá la operación.

document

El documento a insertar.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Una ubicación opcional para un valor de error bson_error_t.

El siguiente ejemplo añade una operación de inserción a la escritura masiva:

bson_t *insert_doc = BCON_NEW(
"name", BCON_UTF8("Mongo's Deli"),
"cuisine", BCON_UTF8("Sandwiches"),
"borough", BCON_UTF8("Manhattan"),
"restaurant_id", BCON_UTF8("1234")
);
bson_error_t error;
if (!mongoc_bulk_operation_insert_with_opts(bulk, insert_doc, NULL, &error)) {
fprintf(stderr, "Failed to add insert operation: %s\n", error.message);
}
bson_destroy(insert_doc);

Para insertar varios documentos, llame a la función mongoc_bulk_operation_insert_with_opts() para cada documento.

Para realizar una operación de actualización, agregue las instrucciones de actualización al valor mongoc_bulk_operation_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulk_operation_update_one_with_opts(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

bulk

El valor mongoc_bulk_operation_t al que se añadirá la operación.

selector

El filtro de consulta que selecciona el documento que se va a actualizar.

document

La actualización se aplicará al documento coincidente.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Una ubicación opcional para un valor de error bson_error_t.

El siguiente ejemplo añade una operación de actualización a la escritura masiva:

bson_t *filter_doc = BCON_NEW("name", BCON_UTF8("Mongo's Deli"));
bson_t *update_doc = BCON_NEW("$set", "{", "cuisine", BCON_UTF8("Sandwiches and Salads"), "}");
bson_error_t error;
if (!mongoc_bulk_operation_update_one_with_opts(bulk, filter_doc, update_doc, NULL, &error)) {
fprintf(stderr, "Failed to add update operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(update_doc);

Para actualizar varios documentos, llame a la función mongoc_bulk_operation_update_many_with_opts() y pase los parámetros que se muestran en el ejemplo anterior. Esto indica al controlador que actualice todos los documentos que coincidan con el filtro de consulta.

El siguiente ejemplo agrega una operación de actualización múltiple a la escritura masiva:

bson_t *filter_doc = BCON_NEW("name", BCON_UTF8("Mongo's Deli"));
bson_t *update_doc = BCON_NEW("$set", "{", "cuisine", BCON_UTF8("Sandwiches and Salads"), "}");
bson_error_t error;
if (!mongoc_bulk_operation_update_many_with_opts(bulk, filter_doc, update_doc, NULL, &error)) {
fprintf(stderr, "Failed to add update operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(update_doc);

Una operación de reemplazo elimina todos los campos y valores de un documento específico y los sustituye por otros nuevos. Para realizar una operación de reemplazo, añada las instrucciones de reemplazo al valor mongoc_bulk_operation_t, lo que pondrá la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulk_operation_replace_one_with_opts(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

bulk

El valor mongoc_bulk_operation_t al que se añadirá la operación.

selector

El filtro de consulta que selecciona el documento que se va a reemplazar.

document

El documento que reemplaza al documento coincidente.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Una ubicación opcional para un valor de error bson_error_t.

El siguiente ejemplo agrega una operación de reemplazo a la escritura masiva:

bson_t *filter_doc = BCON_NEW("restaurant_id", BCON_UTF8("1234"));
bson_t *replace_doc = BCON_NEW(
"name", BCON_UTF8("Mongo's Deli"),
"cuisine", BCON_UTF8("Sandwiches and Salads"),
"borough", BCON_UTF8("Brooklyn"),
"restaurant_id", BCON_UTF8("5678")
);
bson_error_t error;
if (!mongoc_bulk_operation_replace_one_with_opts(bulk, filter_doc, replace_doc, NULL, &error)) {
fprintf(stderr, "Failed to add replace operation: %s\n", error.message);
}
bson_destroy(filter_doc);
bson_destroy(replace_doc);

Para reemplazar varios documentos, llame a la función mongoc_bulk_operation_replace_one_with_opts() para cada documento.

Para realizar una operación de eliminación, agregue las instrucciones de eliminación al valor mongoc_bulk_operation_t, lo que pone la operación en cola como parte de la escritura masiva.

El siguiente ejemplo llama a la función mongoc_bulk_operation_remove_one_with_opts(). Esta función acepta los siguientes parámetros:

Parameter
Descripción

bulk

El valor mongoc_bulk_operation_t al que se añadirá la operación.

selector

El filtro de consulta que selecciona el documento que se va a eliminar.

opts

Configuración opcional para personalizar el funcionamiento, o NULL.

error

Una ubicación opcional para un valor de error bson_error_t.

El siguiente ejemplo añade una operación de eliminación a la escritura masiva:

bson_t *filter_doc = BCON_NEW("restaurant_id", BCON_UTF8("5678"));
bson_error_t error;
if (!mongoc_bulk_operation_remove_one_with_opts(bulk, filter_doc, NULL, &error)) {
fprintf(stderr, "Failed to add delete operation: %s\n", error.message);
}
bson_destroy(filter_doc);

Para eliminar varios documentos, llame a la función mongoc_bulk_operation_remove_many_with_opts() y pase los parámetros que se muestran en el ejemplo anterior. Esto le indica al controlador que elimine todos los documentos que coincidan con el filtro de consulta.

El siguiente ejemplo agrega una operación de eliminación múltiple a la escritura masiva:

bson_t *filter_doc = BCON_NEW("borough", BCON_UTF8("Manhattan"));
bson_error_t error;
if (!mongoc_bulk_operation_remove_many_with_opts(bulk, filter_doc, NULL, &error)) {
fprintf(stderr, "Failed to add delete operation: %s\n", error.message);
}
bson_destroy(filter_doc);

La función mongoc_bulk_operation_execute() acepta los siguientes parámetros:

Parameter
Descripción

bulk

El valor mongoc_bulk_operation_t que contiene las instrucciones para cada operación de escritura.

reply

Un puntero opcional al almacenamiento sobrescribible para el documento de resultados, o NULL.

error

Una ubicación opcional para un valor de error bson_error_t.

El siguiente ejemplo muestra cómo escribir documentos de forma masiva:

bson_error_t error;
mongoc_bulk_operation_t *bulk =
mongoc_collection_create_bulk_operation_with_opts(collection, NULL);
bson_t *insert_doc = BCON_NEW(
"<field name>", BCON_UTF8("<value>"),
"<field name>", BCON_UTF8("<value>"),
"<field name>", BCON_UTF8("<value>"),
"<field name>", BCON_UTF8("<value>")
);
mongoc_bulk_operation_insert(bulk, insert_doc);
bson_destroy(insert_doc);
bson_t *query = BCON_NEW("<field to match>", BCON_UTF8("<value to match>"));
bson_t *update = BCON_NEW("$set", "{", "<field name>", BCON_UTF8("<value>"), "}");
mongoc_bulk_operation_update_one(bulk, query, update, false);
bson_destroy(query);
bson_destroy(update);
bool result = mongoc_bulk_operation_execute(bulk, NULL, &error);
if (!result) {
fprintf(stderr, "Bulk operation error: %s\n", error.message);
}
mongoc_bulk_operation_destroy(bulk);

El siguiente ejemplo llama a la función mongoc_bulk_operation_execute() para realizar las operaciones de inserción, actualización, reemplazo y eliminación.

bson_error_t error;
bool result = mongoc_bulk_operation_execute(bulk, NULL, &error);
if (!result) {
printf("Bulk operation error: %s\n", error.message);
}
mongoc_bulk_operation_destroy(bulk);

Si falla alguna operación de escritura, el controlador C establece el parámetro de salida error y no realiza ninguna otra operación.

Puedes modificar el comportamiento de la función mongoc_collection_create_bulk_operation_with_opts() pasando un documento BSON que especifique los valores de las opciones.

El siguiente ejemplo llama a la función mongoc_collection_create_bulk_operation_with_opts() y establece la opción ordered en false:

bson_t opts;
BSON_APPEND_BOOL(&opts, "ordered", false);
bulk = mongoc_collection_create_bulk_operation_with_opts(collection, &opts);
// Perform bulk operation
bson_destroy(&opts);
mongoc_bulk_operation_destroy(bulk);

Si alguna de las operaciones de guardado en una escritura masiva desordenada falla, el driver C informa de los errores solo después de intentar todas las operaciones.

Nota

Las operaciones masivas no ordenadas no ofrecen garantías del orden de ejecución. El orden puede diferir de la manera en que los enumeras para optimizar el tiempo de ejecución.

La siguiente tabla describe las opciones que puede especificar en el documento de opciones que pasa a mongoc_collection_create_bulk_operation_with_opts():

Opción
Descripción

ordered

Si true, el driver realiza las operaciones de guardado en el orden proporcionado. Si se produce un error, no se intentarán las operaciones restantes.

Si false, el driver realiza las operaciones en un orden arbitrario e intenta realizar todas las operaciones.
Se establece por defecto en true.

writeConcern

Especifica el nivel de confirmación de escritura (write concern) para la operación en lote. Para obtener más información, consulta nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.

sessionId

Ejecuta las operaciones masivas dentro de la sesión especificada. Para obtener más información, consulte Sesiones del servidor en el manual del MongoDB Server.

comment

Anexa un comentario a la operación. Para obtener más información, consulta la guía sobre los campos del comando borrar en el manual del MongoDB Server.

let

Especifica un documento con una lista de valores para mejorar la legibilidad de la operación. Los valores deben ser expresiones constantes o cerradas que no hagan referencia a campos de documentos. Para obtener más información, consulta la instrucción let en el manual de MongoDB Server.

Para aprender cómo realizar operaciones de guardar individuales, consulta los siguientes guías:

Para obtener más información sobre cualquiera de las funciones o tipos mencionados en esta guía, consulta la siguiente documentación de la API: