Docs 菜单
Docs 主页
/ / /
Kotlin 协程
/ / /

Delete Documents

在此页面上

  • Overview
  • 示例文档
  • 删除多个文档
  • 删除文档
  • 查找和删除文档

在本指南中,您可以了解如何使用 MongoDB Kotlin 驱动程序删除文档。

您可以通过将查询筛选器传递给 deleteOne()deleteMany()findOneAndDelete()方法来删除文档。

deleteOne()方法删除单个文档。 如果查询筛选器匹配多个文档,该方法将删除集合中第一次出现的匹配项。

deleteMany()方法删除与查询筛选器匹配的所有文档。

findOneAndDelete()方法自动查找并删除collection中第一次出现的匹配项。

要指定排序规则或提示索引,请将DeleteOptions用作deleteOne()deleteMany()方法的第二个参数。

要在返回的文档上指定排序规则、提示索引、指定排序顺序或指定投影,请将FindOneAndDeleteOptions作为findOneAndDelete()方法的第二个参数。

提示

删除单个文档时,请按唯一索引(例如_id )筛选查询,以确保查询与要删除的文档匹配。

以下示例涉及一家销售八种不同颜色油漆的油漆店。 paint_inventory该商店进行了年度在线销售,导致其collection中出现了以下文档:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "blue", "qty": 0 }
{ "_id": 4, "color": "white", "qty": 0 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 6, "color": "pink", "qty": 0 }
{ "_id": 7, "color": "green", "qty": 0 }
{ "_id": 8, "color": "black", "qty": 8 }

此数据使用以下 Kotlin 数据类进行建模:

data class PaintOrder(
@BsonId val id: Int,
val qty: Int,
val color: String
)

油漆店网站显示paint_inventory集合中的所有文档。 为了减少客户混淆,商店希望删除缺货的颜色。

要删除缺货颜色,请查询paint_inventory qty0为 的collection,然后将查询传递给deleteMany() 方法:

val filter = Filters.eq("qty", 0)
collection.deleteMany(filter)

下面显示了在paint_inventory collection中剩余的文档:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 5, "color": "yellow", "qty": 6 }
{ "_id": 8, "color": "black", "qty": 8 }

商店正在捐赠剩余数量的黄色油漆。 这意味着黄色的qty现在是0 ,我们需要从集合中删除黄色。

要删除黄色,请查询 paint_inventory 集合,其中 color"yellow",并将查询传递给 deleteOne() 方法:

val filter = Filters.eq("color", "yellow")
collection.deleteOne(filter)

下面显示了在paint_inventory collection中剩余的文档:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 8, "color": "black", "qty": 8 }

该商店希望对剩余数量的紫色颜料进行抽奖,并从paint_inventory collection 中删除紫色。

要选择颜色,请查询paint_inventory color"purple"为 的collection,并将查询传递给findOneAndDelete() 方法。与其他删除方法不同, findOneAndDelete()返回已删除的文档:

val filter = Filters.eq("color", "purple")
val result = collection.findOneAndDelete(filter)
println("The following was deleted: $result")
The following was deleted: PaintOrder(id=2, qty=8, color=purple)

注意

如果查询筛选器没有匹配项,则不会删除任何文档,并且该方法会返回null

下面显示了在paint_inventory collection中剩余的文档:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 8, "color": "black", "qty": 8 }

有关本指南中提及的方法和类的更多信息,请参阅以下资源:

  • deleteOne() API 文档

  • deleteMany() API 文档

  • findOneAndDelete() API 文档

  • DeleteOptions API 文档

  • FindOneAndDeleteOptions API 文档

  • db.collection.deleteOne() MongoDB Server手册条目

  • db.collection.deleteMany() MongoDB Server手册条目

  • db.collection.findOneAndDelete() MongoDB Server手册条目

后退

插入操作