Overview
在本指南中,您可以了解如何使用删除 操作从 MongoDB collection中删除文档。
本指南包括以下部分:
示例样本数据
本指南中的示例使用以下样本文档。 每个文档代表商店库存中的一个商品,并包含有关其分类和单价的信息:
{ "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实例中指定的设置:
选项 | 说明 |
|---|---|
| 对结果进行排序时使用的排序规则。要进一步了解排序规则,请参阅排序规则指南。 |
| 操作的写关注(write concern)。如果您未设置此选项,则操作会继承为集合设置的写关注(write concern)。要了解有关写关注(write concern)的更多信息,请参阅服务器手册中的写关注(write concern)。 |
| 用于操作的索引。要了解有关索引的更多信息,请参阅服务器手册中的索引。此选项仅在连接到 MongoDB Server 4.4及更高版本时可用。 |
| 参数和值的映射。这些参数可以作为聚合表达式中的变量进行访问。此选项仅在连接到 MongoDB Server 5.0 及更高版本时可用。 |
| 与操作绑定的任意 |
以下代码展示了如何构造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() 示例
此示例演示如何使用以下参数调用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 文档
要进一步了解本指南所提及的方法和类型,请参阅以下 API 文档: