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.
Docs Menu

Update Documents

En esta guía, puedes aprender a usar el controlador C para actualizar documentos en una colección de MongoDB. Puede llamar a la función mongoc_collection_update_one() para actualizar un único documento o a la función mongoc_collection_update_many() para actualizar varios documentos.

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.

Puedes realizar operaciones de actualización en MongoDB utilizando las siguientes funciones:

  • mongoc_collection_update_one()que actualiza el primer documento que coincide con los criterios de búsqueda

  • mongoc_collection_update_many(), que actualiza todos los documentos que coinciden con los criterios de búsqueda

Cada función de actualización acepta los siguientes parámetros:

  • Colección: Especifica la colección a actualizar.

  • Documento de filtro de query: Especifica qué documentos de la colección se van a actualizar. Para más información sobre los filtros de query, consulta la sección Documentos de filtro de query en el manual de MongoDB Server.

  • Actualizar documento: especifica el operador de actualización o el tipo de actualización que se realizará, así como los campos y valores que se modificarán. Para obtener una lista de los operadores de actualización y su uso, consulte la guía de Operadores de Actualización de Campos en el manual de MongoDB Server.

  • Documento de opciones: Especifica opciones para personalizar la operación o NULL.

  • Ubicación de los resultados: especifica un puntero hacia el almacenamiento sobrescribible que contendrá los resultados de la operación, o NULL.

  • Ubicación del error: Especifica una ubicación para un valor de error, o NULL.

Use la siguiente sintaxis para actualizar un documento:

bson_t *query = BCON_NEW("<field to match>", BCON_UTF8("<value to match>"));
bson_t *update = BCON_NEW("$set", "{", "<field name>", BCON_UTF8("<value>"), "}");
bson_error_t error;
if (!mongoc_collection_update_one(collection, query, update, NULL, NULL, &error)) {
fprintf(stderr, "Update one operation failed: %s\n", error.message);
}
bson_destroy(query);
bson_destroy(update);

El siguiente ejemplo utiliza la función mongoc_collection_update_one() para actualizar el valor name de un documento en la colección restaurants de "Bagels N Buns" a "2 Bagels 2 Buns":

bson_t *query = BCON_NEW("name", BCON_UTF8("Bagels N Buns"));
bson_t *update = BCON_NEW("$set", "{", "name", BCON_UTF8("2 Bagels 2 Buns"), "}");
bson_error_t error;
if (!mongoc_collection_update_one(collection, query, update, NULL, NULL, &error)) {
fprintf(stderr, "Update one operation failed: %s\n", error.message);
}
bson_destroy(query);
bson_destroy(update);

Utilice la siguiente sintaxis para actualizar varios documentos:

bson_t *query = BCON_NEW("<field to match>", BCON_UTF8("<value to match>"));
bson_t *update = BCON_NEW("$set", "{", "<field name>", BCON_UTF8("<value>"), "}");
bson_error_t error;
if (!mongoc_collection_update_many(collection, query, update, NULL, NULL, &error)) {
fprintf(stderr, "Update many operation failed: %s\n", error.message);
}
bson_destroy(query);
bson_destroy(update);

El siguiente ejemplo utiliza la función mongoc_collection_update_many() para actualizar todos los documentos que tienen un valor cuisine de "Pizza". Después de la actualización, los documentos tienen un cuisine valor de "Pasta".

bson_t *query = BCON_NEW("cuisine", BCON_UTF8("Pizza"));
bson_t *update = BCON_NEW("$set", "{", "cuisine", BCON_UTF8("Pasta"), "}");
bson_error_t error;
if (!mongoc_collection_update_many(collection, query, update, NULL, NULL, &error)) {
fprintf(stderr, "Update many operation failed: %s\n", error.message);
}
bson_destroy(query);
bson_destroy(update);

Puedes modificar el comportamiento de las funciones mongoc_collection_update_one() y mongoc_collection_update_many() pasando un documento BSON que especifique los valores de las opciones. La siguiente tabla describe algunas opciones que se pueden configurar en el documento:

Opción
Descripción

bypassDocumentValidation

Si se establece en true, permite que la operación de guardar se excluya de la validación a nivel de documento.
Por defecto, false.
Tipo: bool

writeConcern

Establece el nivel de confirmación de escritura (write concern) para la operación.
Por defecto, el nivel de confirmación de escritura (write concern) del namespace.
Tipo: mongoc_write_concern_t

collation

Especifica el tipo de intercalación de lenguaje que se debe usar al comparar texto. Para obtener más información, consulte Intercalación en el manual de MongoDB Server.
Tipo: bson_t

comment

Un comentario para adjuntar a la operación. Para obtener más información, consulte la guía insertar campos de comando en el manual de MongoDB Server.
Tipo: bson_value_t

upsert

Un comentario para adjuntar a la operación. Para obtener más información, consulte la guía insertar campos de comando en el manual de MongoDB Server.
Tipo: bson_value_t

El siguiente ejemplo utiliza la función mongoc_collection_update_many() para encontrar todos los documentos que tienen borough valor de "Manhattan". Luego actualiza el valor borough en estos documentos a "Manhattan (north)". Debido a que la opción upsert está configurada en true, el driver C inserta un nuevo documento si el filtro de query no coincide con ningún documento existente.

bson_t *query = BCON_NEW("borough", BCON_UTF8("Manhattan"));
bson_t *update = BCON_NEW("$set", "{", "borough", BCON_UTF8("Manhattan (north)"), "}");
bson_error_t error;
bson_t opts;
bson_init(&opts);
bson_append_bool(&opts, "upsert", -1, true);
if (!mongoc_collection_update_many(collection, query, update, &opts, NULL, &error)) {
fprintf(stderr, "Update many operation failed: %s\n", error.message);
}
bson_destroy(query);
bson_destroy(update);
bson_destroy(&opts);

Para obtener más información sobre cómo crear filtros de query, se puede consultar la Especificar una query.

Para aprender más sobre alguna de las funciones tratadas en esta guía, consulta la siguiente documentación de la API: