文档菜单
文档首页
/ / /
C 驱动器
/

删除文档

本页内容

  • 概述
  • 示例数据
  • 删除操作
  • 删除单个文档
  • 删除多个文档
  • 自定义删除操作
  • API 文档

在本指南中,您可以了解如何使用 C 驱动程序通过执行 删除操作 从 MongoDB 集合中删除文档。

删除操作从 MongoDB 集合中删除一个或多个文档。您可以使用以下函数执行删除操作:mongoc_collection_delete_one()mongoc_collection_delete_many() 函数。

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

您可以使用以下函数执行删除操作:

  • mongoc_collection_delete_one(),它删除符合搜索条件的 第一个文档

  • mongoc_collection_delete_many(),用于删除所有符合搜索条件的文档

每个删除函数接受以下参数

  • 集合:指定要修改的集合。

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

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

  • 错误位置:指定一个错误值的位置,或NULL

以下示例使用mongoc_collection_delete_one()函数从具有name值为"Ready Penny Inn"restaurants集合中删除一个文档。

bson_t *filter = BCON_NEW ("name", BCON_UTF8 ("Ready Penny Inn"));
bson_error_t error;
if (!mongoc_collection_delete_one (collection, filter, NULL, NULL, &error)) {
printf ("Delete error: %s\n", error.message);
}
bson_destroy (filter);

以下示例使用mongoc_collection_delete_many()函数从具有borough值为"Brooklyn"restaurants集合中删除所有文档。

bson_t *filter = BCON_NEW ("borough", BCON_UTF8 ("Brooklyn"));
bson_error_t error;
if (!mongoc_collection_delete_many (collection, filter, NULL, NULL, &error)) {
printf ("Delete error: %s\n", error.message);
}
bson_destroy (filter);

您可以通过传递一个指定选项值的BSON文档来修改mongoc_collection_delete_one()mongoc_collection_delete_many()函数的行为。以下表格描述了您可以在文档中设置的某些选项

字段
描述
collation
指定比较文本时使用的语言排序类型。有关更多信息,请参阅MongoDB服务器手册中的排序
类型: bson_t
writeConcern
设置操作的写关注。
默认为命名空间的写关注。
类型: mongoc_write_concern_t
let
指定一个包含值的文档列表,以提高操作的可读性。值必须是常量或闭包表达式,不引用文档字段。有关更多信息,请参阅MongoDB服务器手册中的let语句
类型: bson_t
comment
将附加到操作的注释。有关更多信息,请参阅MongoDB服务器手册中的插入命令字段指南。
类型: bson_value_t

以下示例调用mongoc_collection_delete_many()函数,删除restaurants集合中所有具有包含字符串"Mongo"name值的文档。它还设置了comment选项以添加对操作的注释

bson_t *filter = BCON_NEW ("name", "{", "$regex", BCON_UTF8 ("Mongo"), "}");
bson_error_t error;
bson_t opts;
bson_init(&opts);
BCON_APPEND (&opts, "comment", BCON_UTF8 ("Deleting Mongo restaurants"));
if (!mongoc_collection_delete_many (collection, filter, &opts, NULL, &error)) {
printf ("Delete error: %s\n", error.message);
}
bson_destroy (filter);
bson_destroy (&opts);

提示

如果您在前面的示例中使用的是mongoc_collection_delete_one()函数而不是mongoc_collection_delete_many(),则驱动程序将仅删除第一个具有包含字符串"Mongo"name值的文档。

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

返回

更新文档