文档菜单
文档首页
/ / /
Kotlin 同步驱动程序
/

删除文档

本页内容

  • 概述
  • 示例数据
  • 删除操作
  • 删除单个文档
  • 删除多个文档
  • 自定义删除操作
  • 返回值
  • API 文档

在本指南中,您可以了解如何使用 Kotlin Sync 驱动通过执行 删除操作 从 MongoDB 集合中删除文档。

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

本指南中的示例使用来自Atlas 示例数据集sample_restaurants.restaurants 集合。要了解如何创建免费的 MongoDB Atlas 集群并加载示例数据集,请参阅 Atlas 入门指南

此集合中的文档由以下 Kotlin 数据类建模

data class Restaurant(val name: String, val borough: String)

您可以使用以下方法在 MongoDB 中执行删除操作:

  • deleteOne(),该操作删除与搜索条件匹配的第一个文档

  • deleteMany(),该操作删除与搜索条件匹配的所有文档

每个删除方法都需要一个 查询过滤器 文档,该文档指定了确定要删除哪些文档的搜索条件。有关查询过滤器的更多信息,请参阅指定查询 指南。

以下示例使用 deleteOne() 方法删除名称字段值为 "Happy Garden" 的文档。

val filter = eq(Restaurant::name.name, "Happy Garden")
val result = collection.deleteOne(filter)

以下示例使用 deleteMany() 方法删除所有位于 "Brooklyn" 区且名称字段值为 "Starbucks" 的文档。

val filter = and(
eq(Restaurant::borough.name, "Brooklyn"),
eq(Restaurant::name.name, "Starbucks")
)
val result = collection.deleteMany(filter)

deleteOne()deleteMany() 方法可以接受一个可选的 DeleteOptions 参数,该参数代表你可以用来配置删除操作的选项。如果你没有指定任何选项,驱动程序将使用默认设置执行删除操作。

以下表格描述了你可以用来配置 DeleteOptions 实例的设置方法

方法
描述
collation()
指定在排序结果时使用的语言排序类型。有关更多信息,请参阅 MongoDB 服务器手册中的排序
hint()
指定在匹配文档时使用的索引。有关更多信息,请参阅 MongoDB 服务器手册中的提示语句
hintString()
指定索引作为字符串,用于匹配文档。有关更多信息,请参阅MongoDB服务器手册中的提示语句
let()
提供参数名称和值的映射,用于设置操作的顶层变量。值必须是常量或封闭表达式,不能引用文档字段。有关更多信息,请参阅MongoDB服务器手册中的let语句
comment()
设置要附加到操作的注释。有关更多信息,请参阅MongoDB服务器手册中有关删除命令字段的指南。

以下代码创建选项,并使用comment()方法将注释添加到删除操作。然后,示例使用deleteMany()方法删除restaurants集合中所有name字段值包含字符串"Red"的文档。

val opts = DeleteOptions().comment("sample comment")
val filter = regex(Restaurant::name.name, "Red")
val result = collection.deleteOne(filter, opts)

提示

如果您在前面示例中使用deleteOne()方法而不是deleteMany()方法,则驱动程序仅删除第一个与查询过滤器匹配的文档。

deleteOne()deleteMany()方法各自返回一个DeleteResult实例。您可以从DeleteResult实例访问以下信息

  • deletedCount,表示删除的文档数量

  • wasAcknowledged(),如果服务器确认结果则返回true

如果查询过滤器不匹配任何文档,则驱动器不会删除任何文档,并且deletedCount的值是0

注意

如果wasAcknowledged()方法返回false,尝试访问deletedCount属性将导致一个InvalidOperation异常。如果服务器没有确认写操作,驱动器无法确定这些值。

要了解本指南中讨论的任何方法或类型,请参阅以下API文档

返回上一页

替换