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

删除文档

本页内容

  • 概述
  • 示例文档
  • 删除多个文档
  • 删除一个文档
  • 查找并删除文档

在这份指南中,您可以学习如何使用MongoDB Java驱动程序删除文档。

您可以通过传递一个查询过滤器到deleteOne()deleteMany()findOneAndDelete()方法来删除文档。

deleteOne()方法删除单个文档。如果查询过滤器匹配多个文档,则该方法将删除集合中匹配的第一个文档。

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

findOneAndDelete()方法原子性地查找并删除集合中匹配的第一个文档。

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

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

以下示例涉及一家销售八种不同颜色的油漆的油漆店。该店举办了一年一度的在线促销活动,结果在其paint_inventory集合中产生了以下文档

{ "_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 }

涂料店网站显示 paint_inventory 集合中的所有文档。为了减少顾客的困惑,商店想要删除已售罄的颜色。

要删除已售罄的颜色,查询 paint_inventory 集合中 qty0 的文档,并将查询传递给 deleteMany() 方法

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

以下展示了 paint_inventory 集合中剩余的文档

{ "_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() 方法

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

以下展示了 paint_inventory 集合中剩余的文档

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

商店希望抽签剩余的紫色油漆数量,并从 paint_inventory 集合中移除紫色。

要选择颜色,查询 paint_inventory 集合中颜色为 "purple" 的记录,并将查询传递给 findOneAndDelete() 方法。

Bson filter = Filters.eq("color", "purple");
System.out.println(collection.findOneAndDelete(filter).toJson());

与其它删除方法不同,findOneAndDelete() 返回被删除的文档。

{ "_id": 2, "color": "purple", "qty": 8 }

注意

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

以下展示了 paint_inventory 集合中剩余的文档

{ "_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() 服务器手册条目

  • db.collection.deleteMany() 服务器手册条目

  • db.collection.findOneAndDelete() 服务器手册条目

返回

插入