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

Delete Documents

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

本指南包括以下部分:

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

  • 删除操作描述了如何使用驱动程序执行删除操作

  • 附加信息提供了本指南中提到的类型和方法的资源和 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

操作的写关注(write concern)。如果您未设置此选项,则操作会继承为集合设置的写关注(write concern)。要了解有关写关注(write concern)的更多信息,请参阅服务器手册中的写关注(write concern)

类型:WriteConcern

hint

用于操作的索引。要了解有关索引的更多信息,请参阅服务器手册中的索引。此选项仅在连接到 MongoDB Server 4.4及更高版本时可用。

类型:Hint
默认: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);
Deleted documents: 2

注意

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

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

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

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