Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Update Documents

En esta guía, aprenderás a usar el driver de C para actualizar documentos en una colección de MongoDB. Puedes llamar al mongoc_collection_update_one() función para actualizar un solo documento o la función mongoc_collection_update_many() para actualizar varios documentos.

Los ejemplos de esta guía usan la colección restaurants en la base de datos sample_restaurants de la 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 ejemplo, consulta la guía Introducción a MongoDB.

Puede 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á, y los campos y valores que se modificarán. Para obtener una lista de operadores de actualización y su uso, consulte la guía "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 NULL o.

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

If set to true, allows the write operation to opt out of document-level validation.
Defaults to false.
Type: bool

writeConcern

Sets the write concern for the operation.
Defaults to the write concern of the namespace.
Type: mongoc_write_concern_t

collation

Specifies the kind of language collation to use when comparing text. For more information, see Collation in the MongoDB Server manual.
Type: bson_t

comment

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
Type: bson_value_t

upsert

A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.
Type: 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 consulta, consulte la Guía '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:

Volver

Reemplaza

En esta página