删除文档
概述
在本指南中,您可以了解如何使用删除操作从MongoDB集合中删除文档。
本指南包括以下部分
示例数据
本指南中的示例使用以下样本文档。每个文档代表商店库存中的一个项目,并包含有关其分类和单价的信息
{ "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()
方法接受一个查询过滤器作为参数。查询过滤器由用于匹配文档的字段和值组成。
选项
您可以通过将选项构建器方法链接到 delete_one()
和 delete_many()
来修改删除操作方法的行为。这些选项方法设置 DeleteOptions
结构体的字段。
注意
设置选项
您可以通过直接将选项构建器方法链接到删除方法调用来设置 DeleteOptions
字段。如果您正在使用较早期的驱动程序版本,您必须通过将选项构建器方法链接到 builder()
方法来构建一个 DeleteOptions
实例。然后,将选项实例作为参数传递给 delete_one()
或 delete_many()
。
以下表格描述了 DeleteOptions
中可用的选项
选项 | 描述 |
---|---|
collation | |
write_concern | |
hint | |
let_vars | 参数和值的映射。这些参数可以在聚合表达式中作为变量访问。此选项仅当连接到 MongoDB 服务器版本 5.0 及更高版本时可用。 类型: Document |
comment | 与操作相关的任意 Bson 值,以便通过数据库分析器、currentOp 和日志来跟踪它。此选项仅当连接到 MongoDB 服务器版本 4.4 及更高版本时可用。类型: Bson 默认值: None |
以下代码演示了如何通过将 comment()
方法链接到 delete_one()
方法来设置 comment
字段
let res = my_coll .delete_one(filter) .comment(bson!("hello!")) .await?;
返回值
delete_one()
和 delete_many()
方法返回一个 DeleteResult
类型。此类型包含 deleted_count
属性,该属性描述了已删除的文档数量。如果没有文档与您指定的查询过滤器匹配,则删除操作不会删除任何文档,并且 deleted_count
的值为 0
。
delete_many() 示例
本示例执行以下操作
调用
delete_many()
方法将查询过滤器传递给
delete_many()
以匹配category
值为"garden"
的文档将
hint()
方法链接到delete_many()
以使用_id_
索引作为删除操作的提示
let filter = doc! { "category": "garden" }; let hint = Hint::Name("_id_".to_string()); let res = my_coll .delete_many(filter) .hint(hint) .await?; println!("Deleted documents: {}", res.deleted_count);
Deleted documents: 2
注意
如果您在前面代码示例中使用 delete_one()
方法而不是 delete_many()
方法,驱动程序将仅删除与查询过滤器匹配的两个文档中的第一个。
更多信息
有关可运行的删除操作示例,请参阅以下用法示例
要了解更多关于本指南中所述操作的信息,请参阅以下文档
API 文档
要了解更多关于本指南中提到的方法和类型的信息,请参阅以下 API 文档