Docs 菜单
Docs 主页
/ / /
C 驱动程序
/

Update Documents

在此页面上

  • Overview
  • 样本数据
  • 更新操作
  • 更新一个文档
  • 更新多个文档
  • 自定义更新操作
  • 更多信息
  • API 文档

在本指南中,您可以学习;了解如何使用C驾驶员更新MongoDB集合中的文档。您可以调用 mongoc_collection_update_one() 函数来更新单个文档,也可以调用 mongoc_collection_update_many() 函数来更新多个文档。

本指南中的示例使用 Atlas示例数据集sample_restaurants数据库中的restaurants集合。 要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅Atlas入门指南。

您可以使用以下函数在MongoDB中执行更新操作:

  • mongoc_collection_update_one(),更新匹配搜索条件的第一个文档

  • mongoc_collection_update_many(),更新与搜索条件匹配的所有文档

每个更新函数接受以下参数:

  • 集合:指定要更新的集合。

  • 查询过滤文档:指定要更新的集合文档。有关查询筛选器的更多信息,请参阅MongoDB Server手册中的查询筛选器文档部分。

  • 更新文档:指定更新操作符或要执行的更新类型,以及要更改的字段和值。有关更新操作符及其用法的列表,请参阅MongoDB Server手册中的字段更新操作符指南。

  • 选项文档:指定用于自定义操作的选项,或NULL

  • 结果位置:指定指向将包含操作结果的可覆盖存储的指针,或NULL

  • 错误位置:指定错误值或NULL 的位置。

以下示例使用 mongoc_collection_update_one() 函数将 restaurants集合中某一文档的 name 值从 "Bagels N Buns"更新为 "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);

以下示例使用 mongoc_collection_update_many() 函数更新cuisine 值为 "Pizza" 的所有文档。更新后,文档的 cuisine 值为 "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);

您可以通过传递指定选项值的BSON文档来修改 mongoc_collection_update_one()mongoc_collection_update_many() 函数的行为。下表描述了您可以在文档中设立的一些选项:

选项
说明

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

以下示例使用 mongoc_collection_update_many() 函数查找 borough 值为 "Manhattan" 的所有文档。然后,它将这些文档中的 borough 值更新为 "Manhattan (north)"。由于 upsert 选项设立为 true ,因此如果查询过滤与任何现有文档都不匹配, C驾驶员将插入一个新文档。

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

要学习;了解有关创建查询筛选器的更多信息,请参阅《 指定查询》指南。

要学习;了解有关本指南中讨论的任何函数的更多信息,请参阅以下API文档:

后退

替换