删除文档
概述
在本指南中,您可以了解如何使用Java反应式流驱动程序通过执行删除操作从MongoDB集合中删除文档。
删除操作从MongoDB集合中删除一个或多个文档。您可以使用deleteOne()
或 deleteMany()
方法执行删除操作。
示例数据
本指南中的示例使用来自Atlas 示例数据集的.
sample_restaurants.restaurants集合
项目 Reactor 库
本指南使用 Project Reactor 库来消费 Java 反应式流驱动程序方法返回的 Publisher
实例。要了解更多关于 Project Reactor 库及其使用方法,请参阅 Reactor 文档中的 入门。要了解更多关于本指南中如何使用 Project Reactor 库的方法,请参阅写入 MongoDB 数据指南。
每个删除方法都需要一个 查询过滤器,该过滤器指定了搜索条件,以确定要删除哪些文档。有关查询过滤器的更多信息,请参阅 MongoDB 服务器手册中的查询过滤器文档部分。
删除单个文档
要从 MongoDB 集合中删除单个文档,调用 deleteOne()
方法并传入您的查询过滤器。然后,将 deleteOne()
结果传递给来自 Mono
的静态 Mono.from
方法。Mono
是来自 Project Reactor 库的一个类。在 Java Reactive Streams 中,驱动程序方法返回冷 Publisher
实例,这意味着相应的操作不会发生,除非您订阅返回的 Publisher
。本指南使用 Project Reactor 库来消费它们。有关 Mono
的更多信息,请参阅 Project Reactor 文档中的Mono。
以下示例删除了 restaurants
集合中名为 "Ready Penny Inn"
的文档。
Publisher<DeleteResult> deletePublisher = restaurants.deleteOne( eq("name", "Ready Penny Inn")); Mono.from(deletePublisher).block();
删除多个文档
要从MongoDB集合中删除多个文档,请调用 deleteMany()
方法并传入您的查询过滤器。然后,将 deleteMany()
的结果传递给来自 Mono
的静态 Mono.from
方法。Mono
是 Project Reactor 库中的一个类。在 Java Reactive Streams 中,驱动方法返回冷 Publisher
实例,这意味着除非您订阅返回的 Publisher
,否则相应的操作不会发生。本指南使用 Project Reactor 库来消费它们。有关 Mono
的更多信息,请参阅 Project Reactor 文档中的 Mono。
以下示例删除了具有 borough
值为 "Brooklyn"
的所有 restaurants
集合中的文档。
Publisher<DeleteResult> deletePublisher = restaurants.deleteMany( eq("borough", "Brooklyn")); Mono.from(deletePublisher).block();
自定义删除操作
DeleteOptions
类包含修改删除方法行为的方法。要使用 DeleteOptions
类,构造一个新实例,然后调用其一个或多个方法以修改删除操作。您可以链接这些方法调用。要修改删除操作的行为,将类实例和链接的方法调用作为 deleteOne()
或 deleteMany()
方法的第二个参数传递。
您可以在 DeleteOptions
类中使用以下方法来修改删除方法。所有方法都是可选的。
方法 | 描述 |
---|---|
collation (Collation collation) | 指定排序结果时使用的语言排序类型。有关更多信息,请参阅 MongoDB 服务器手册中的 排序。 |
hint (Bson hint) | 获取或设置用于扫描文档的索引。有关更多信息,请参阅 MongoDB 服务器手册中的 提示语句。 |
hint (String hint) | 获取或设置用于扫描文档的索引。有关更多信息,请参阅 MongoDB 服务器手册中的 提示语句。 |
let (Bson variables) | 参数名称和值的映射。值必须是常数或封闭表达式,不引用文档字段。有关更多信息,请参阅 MongoDB 服务器手册中的 let 语句。 |
comment (BsonValue comment) | 附加到操作上的注释。有关更多信息,请参阅 MongoDB 服务器手册中的 删除命令字段 指南。 |
comment (String comment) | 附加到操作上的注释。有关更多信息,请参阅 MongoDB 服务器手册中的 删除命令字段 指南。 |
示例
以下代码使用 deleteMany()
方法删除 restaurants
集合中所有具有包含字符串 "Mongo"
的 name
值的文档。它还使用 comment
方法向操作添加注释。
Publisher<DeleteResult> deletePublisher = restaurants.deleteMany( regex("name", "Mongo"), new DeleteOptions().comment("Deleting Mongo restaurants")); Mono.from(deletePublisher).block();
附加信息
有关使用Java反应式流驱动程序插入文档的运行代码示例,请参阅将数据写入MongoDB指南。
API文档
要了解本指南中讨论的任何方法或类型,请参阅以下API文档