Atualize documentos
Nesta página
Visão geral
Neste guia, você pode aprender como usar o driver C para atualizar documentos em uma coleção MongoDB . Você pode chamar a função mongoc_collection_update_one()
para atualizar um único documento ou a função mongoc_collection_update_many()
para atualizar vários documentos.
Dados de amostra
Os exemplos neste guia utilizam a coleção do restaurants
no banco de dados de dados do sample_restaurants
a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .
Atualizar operações
Você pode executar operações de atualização no MongoDB usando as seguintes funções:
mongoc_collection_update_one()
, que atualiza o primeiro documento que corresponde aos critérios de pesquisamongoc_collection_update_many()
, que atualiza todos os documentos que correspondem aos critérios de pesquisa
Cada função de atualização aceita os seguintes parâmetros:
Collection: especifica a collection a ser atualizada.
documento de filtro de query : especifica quais documentos de coleção atualizar. Para obter mais informações sobre filtros de query, consulte a seção Documentos de filtro de query no manual do MongoDB Server .
Atualizardocumento : especifica o operador de atualização ou o tipo de atualização a ser executada, e os campos e valores a serem alterados. Para obter uma lista de operadores de atualização e seu uso, consulte o guia Operadores de atualização de campo no manual do MongoDB Server .
documento de opções : especifica opções para personalizar a operação,
NULL
ou.Local dos resultados: especifica um ponteiro para o armazenamento substituível que conterá os resultados da operação ou
NULL
.Local do erro: especifica um local para um valor de erro ou
NULL
.
Atualizar um documento
O exemplo seguinte utiliza a função mongoc_collection_update_one()
para atualizar o valor name
de um documento na coleção restaurants
de "Bagels N Buns"
para "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);
Atualizar muitos documentos
O exemplo seguinte utiliza a função mongoc_collection_update_many()
para atualizar todos os documentos que têm um valor cuisine
de "Pizza"
. Após a atualização, os documentos têm um 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);
Personalizar a operação de atualização
Você pode modificar o comportamento das funções mongoc_collection_update_one()
e mongoc_collection_update_many()
passando um documento BSON que especifica os valores das opções. A tabela a seguir descreve algumas opções que você pode definir no documento:
Opção | Descrição |
---|---|
| If set to true , allows the write operation to opt out of
document-level validation.Defaults to false .Type: bool |
| Sets the write concern for the operation. Defaults to the write concern of the namespace. Type: mongoc_write_concern_t |
| Specifies the kind of language collation to use when comparing
text. For more information, see Collation
in the MongoDB Server manual. Type: bson_t |
| 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 |
| 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 |
O exemplo a seguir usa a função mongoc_collection_update_many()
para localizar todos os documentos que têm borough
valor de "Manhattan"
. Em seguida, ele atualiza o valor de borough
nesses documentos para "Manhattan (north)"
. Como a opção upsert
está definida como true
, o driver C insere um novo documento se o filtro de query não corresponder a nenhum 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);
Informações adicionais
Para saber mais sobre como criar filtros de query, consulte o guia Especificar uma query .
Documentação da API
Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API: