对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

Delete Documents

在本指南中,您可以了解如何使用删除 操作从 MongoDB collection中删除文档。

本指南包括以下部分:

  • 示例的样本数据显示了删除操作示例使用的样本数据

  • Delete Operations describes how to use the driver to execute delete operations

  • 附加信息提供了本指南中提到的类型和方法的资源和 API 文档链接

本指南中的示例使用以下样本文档。 每个文档代表商店库存中的一个商品,并包含有关其分类和单价的信息:

{ "item": "trowel", "category": "garden", "unit_price": 9.89 },
{ "item": "placemat", "category": "kitchen", "unit_price": 3.19 },
{ "item": "watering can", "category": "garden", "unit_price": 11.99 }

Rust 驱动程序提供了delete_one()和delete_many()方法来执行删除操作。

delete_one()和delete_many()方法将查询筛选器作为参数。 查询筛选器由构成要匹配的文档条件的字段和值组成。

您还可以选择将DeleteOptions类型作为参数传递给任一方法。 您可以在DeleteOptions实例中指定设置来配置删除操作。 要使用每个设置的默认值,请将值None指定为选项参数。

注意

实例化选项

Rust 驱动程序实现了用于创建许多不同类型的 Builder 设计模式,包括DeleteOptions 。 您可以使用每种类型的builder()方法,通过逐个链接选项构建器函数来构造选项实例。

下表描述了您可以在DeleteOptions实例中指定的设置:

选项
说明

collation

对结果进行排序时使用的排序规则。要进一步了解排序规则,请参阅排序规则指南。

类型: Collation
默认: None

write_concern

The write concern for the operation. If you don't set this option, the operation inherits the write concern set for the collection. To learn more about write concerns, see Write Concern in the Server manual.

Type: WriteConcern

hint

The index to use for the operation. To learn more about indexes, see Indexes in the Server manual. This option is available only when connecting to MongoDB Server versions 4.4 and later.

Type: Hint
Default: None

let_vars

参数和值的映射。这些参数可以作为聚合表达式中的变量进行访问。此选项仅在连接到 MongoDB Server 5.0 及更高版本时可用。

类型:Document

comment

与操作绑定的任意 Bson 值,可通过数据库分析器、currentOp 和日志进行追踪。此选项仅在连接到 MongoDB Server 4.4 及更高版本时可用。

类型:Bson
默认:None

以下代码展示了如何构造DeleteOptions实例并将其传递给delete_one()方法:

let opts: DeleteOptions = DeleteOptions::builder().comment(bson!("hello!")).build();
let res = my_coll.delete_one(filter, opts).await?;

delete_one()和delete_many()方法返回DeleteResult类型。 此类型包含deleted_count属性,该属性描述已删除的文档数量。 如果没有文档与您指定的查询筛选器匹配,则删除操作不会删除任何文档,并且deleted_count的值为0 。

此示例演示如何使用以下参数调用delete_many()方法:

  • 查询筛选器,匹配category值为"garden"的文档

  • 使用_id_索引作为删除操作提示的DeleteOptions实例

let filter = doc! { "category": "garden" };
let hint = Hint::Name("_id_".to_string());
let opts: DeleteOptions = DeleteOptions::builder().hint(hint).build();
let res = my_coll.delete_many(filter, opts).await?;
println!("Deleted documents: {}", res.deleted_count);

注意

如果在前面的代码示例中使用delete_one()方法而不是delete_many() ,则驱动程序仅删除与查询筛选器匹配的两个文档中的第一个。

有关删除操作的可运行示例,请参阅以下用法示例:

要了解有关本指南中操作的更多信息,请参阅以下文档:

要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: