Menu Docs
Página inicial do Docs
/ / /
Driver C
/

Atualize documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • Atualizar operações
  • Atualizar um documento
  • Atualizar muitos documentos
  • Personalizar a operação de atualização
  • Informações adicionais
  • Documentação da API

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.

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 .

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 pesquisa

  • mongoc_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.

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);

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);

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

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

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);

Para saber mais sobre como criar filtros de query, consulte o guia Especificar uma query .

Para saber mais sobre qualquer uma das funções discutidas nesta guia, consulte a seguinte documentação da API:

Voltar

Substituir