文档菜单
文档首页
/ / /
rust驱动
/ / /

删除文档

本页内容

  • 概述
  • 示例数据
  • 删除操作
  • 参数
  • 选项
  • 返回值
  • delete_many() 示例
  • 附加信息
  • API文档

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

本指南包括以下部分

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

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

  • 附加信息提供了本指南中提到的类型和方法的资源链接和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() 方法接受一个查询过滤器作为参数。查询过滤器由用于匹配文档的字段和值组成。

您可以通过将选项构建器方法链接到 delete_one()delete_many() 来修改删除操作方法的行为。这些选项方法设置 DeleteOptions 结构体的字段。

注意

设置选项

您可以通过直接将选项构建器方法链接到删除方法调用来设置 DeleteOptions 字段。如果您正在使用较早期的驱动程序版本,您必须通过将选项构建器方法链接到 builder() 方法来构建一个 DeleteOptions 实例。然后,将选项实例作为参数传递给 delete_one()delete_many()

以下表格描述了 DeleteOptions 中可用的选项

选项
描述
collation
用于排序结果时使用的排序规则。要了解更多关于排序规则的信息,请参阅 排序规则 指南。

类型: Collation
默认值: None
write_concern
操作的写关注。如果您不设置此选项,则操作将继承集合设置的写关注。要了解更多关于写关注的信息,请参阅服务器手册中的 写关注

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

类型: Hint
默认值: None
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() 以匹配 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 文档

返回

修改