Docs Menu
Docs Home
/ /

Update Documents

En esta guía, aprenderá a usar el controlador C para actualizar documentos en una colección de MongoDB. Puede 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 utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de ejemplo de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de ejemplo, consulte la guía de 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 que se 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 NULL o.

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

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

Utilice 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 cuyo valor cuisine es "Pizza". Tras la actualización, los documentos tienen un valor cuisine 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);

Puede 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 puede 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 buscar todos los documentos cuyo valor borough es "Manhattan". A continuación, actualiza el valor borough de estos documentos a "Manhattan (north)". Dado que la opción upsert está establecida en true, el controlador de C inserta un nuevo documento si el filtro de consulta 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 Especifique una guía de consulta.

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