文档菜单
文档首页
/ / /
Java反应式流驱动程序
/

删除文档

本页内容

  • 概述
  • 示例数据
  • 删除操作
  • 删除单个文档
  • 删除多个文档
  • 自定义删除操作
  • 示例
  • 其他信息
  • API 文档

在本指南中,您可以了解如何使用Java反应式流驱动程序通过执行删除操作从MongoDB集合中删除文档。

删除操作从MongoDB集合中删除一个或多个文档。您可以使用deleteOne()deleteMany() 方法执行删除操作。

本指南中的示例使用来自Atlas 示例数据集的.

sample_restaurants.restaurants集合

要了解如何创建免费的 MongoDB Atlas 集群并加载数据集,请参阅

入门教程。

重要

本指南使用 Project Reactor 库来消费 Java 反应式流驱动程序方法返回的 Publisher 实例。要了解更多关于 Project Reactor 库及其使用方法,请参阅 Reactor 文档中的 入门。要了解更多关于本指南中如何使用 Project Reactor 库的方法,请参阅写入 MongoDB 数据指南。

  • 删除操作

  • 您可以使用以下方法在 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文档

返回

替换