我有一个java程序,它根据特定的日期条件查找文档并删除所有这些文档。一旦找到,我不确定如何删除这些文件。当我使用以下命令查询MongoDB数据库时,它会向我显示2706
个文档。
MongoDB版本:3.0
Mongo-Java驱动程序版本:3.1.0
Mongo Shell命令:
db.jobs.find({"startTime" : { $gte : "2015-11-04 00:00:00"}}).count();
Output: 2706
我有以下java程序,它或多或少类似于上面的命令。
Java代码:
MongoDatabase database = DataSourceFactory.getDatabase(DatabaseType.MONGODB.name());
MongoCollection<Document> collection = database.getCollection("jobs");
//find and delete existing documents first
String currentDate = GenericUtils.getCurrentDate() + " 00:00:00";
Document doc = collection.findOneAndDelete(gte("startTime", currentDate));
我不确定是否可以使用findOneAndDelete()
方法。我是否必须编写一个执行此操作的循环?有没有办法在一次搜索中找到并删除所有记录?
不确定如何删除所有记录并计算已删除的记录数。
我用谷歌搜索并找到了一些在线教程,但其中大多数是基于旧版2.1, 2.2
等。
请指导。
答案 0 :(得分:1)
找到它。
deleteMany()
方法可用于一次性查找和删除文档。
DeleteResult deleteResult = collection.deleteMany(gte("startTime", currentDate));
LOG.debug(deleteResult.getDeletedCount() + " document(s) deleted.....");