删除文档

您可以使用对象deleteOne() 上方法从集合中删除单个文档MongoCollection该方法接受与您要删除的文档匹配的查询过滤器。如果不指定过滤器,MongoDB 将匹配集合中的第一个文档。该 deleteOne()方法仅删除匹配的第一个文档。

此方法返回一个实例,DeleteResult其中包含的信息包括由于操作而删除了多少文档。

如果删除操作失败,驱动程序会引发异常。有关在特定条件下引发的异常类型的更多信息,请参阅deleteOne()本页底部链接的 API 文档

以下代码段从数据库movies 集合中删除单个文档sample_mflix该示例使用eq() 过滤器来匹配与title文本完全匹配的 电影'The Garbage Pail Kids Movie'

笔记

此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南

 

package usage.examples;
import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.DeleteResult;
public class DeleteOne { public static void main(String[] args) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Bson query = eq("title", "The Garbage Pail Kids Movie"); try { DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); } catch (MongoException me) { System.err.println("Unable to delete due to an error: " + me); } } } }

 

运行示例时,如果您在调用中传递的查询过滤器 deleteOne()匹配文档并将其删除,您应该会看到如下所示的输出:

Deleted document count: 1

 

如果您的查询过滤器与您的集合中的文档不匹配,您的调用不会deleteOne()删除任何文档并返回以下内容:

Deleted document count: 0

 

删除多个文档

通过调用对象deleteMany()方法,您可以在单个操作中从集合中删除多个文档MongoCollection

要指定要删除的文档,请传递与要删除的文档匹配的查询过滤器。如果您提供一个空文档,MongoDB 会匹配集合中的所有文档并删除它们。虽然您可以使用deleteMany()删除集合中的所有文档,但请考虑改用该drop()方法以获得更好的性能。

成功删除后,此方法返回 的实例 DeleteResult您可以通过调用实例getDeletedCount()上的方法 来检索信息,例如删除的文档数DeleteResult

如果删除操作失败,驱动程序会引发异常。有关在特定条件下引发的异常类型的更多信息,请参阅deleteMany()本页底部链接的 API 文档

以下代码段从数据库中movies 集合中删除多个文档sample_mflix

传递给查询筛选deleteMany()方法包含所有电影文件相匹配rating的小于1.9的在imdb 子文件。

笔记

此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南

 

package usage.examples;
import static com.mongodb.client.model.Filters.lt; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.DeleteResult;
public class DeleteMany { public static void main(String[] args) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Bson query = lt("imdb.rating", 1.9); try { DeleteResult result = collection.deleteMany(query); System.out.println("Deleted document count: " + result.getDeletedCount()); } catch (MongoException me) { System.err.println("Unable to delete due to an error: " + me); } } } }

 

运行该示例时,您应该会看到输出报告在调用 deleteMany()。

Deleted document count: 4

 

提示
传统 API

如果您使用的是旧 API, 请参阅我们的常见问题解答页面 以了解您需要对此代码示例进行哪些更改。

 

官网地址:https://docs.mongodb.com/drivers/java/sync/current/usage-examples/deleteOne/