Java 为什么可以';使用mongoTemplate.remove删除数据
我使用过javaJava 为什么可以';使用mongoTemplate.remove删除数据,java,mongodb,Java,Mongodb,我使用过javaspring bootversion1.5.14。RELEASE和spring data mongodb版本是1.10.13-RELEASE。我正在尝试做数据归档 我将通过beginId和endId查找master MongoDB中的数据,然后将数据同步到其他库中,最后,我将通过beginId和endId删除主库数据 public int del(ObjectId beginId、ObjectId endId、String collectionName){ Criteria=ge
spring boot
version1.5.14。RELEASE
和spring data mongodb
版本是1.10.13-RELEASE
。我正在尝试做数据归档
我将通过beginId
和endId
查找master MongoDB中的数据,然后将数据同步到其他库中,最后,我将通过beginId
和endId
删除主库数据
public int del(ObjectId beginId、ObjectId endId、String collectionName){
Criteria=getCriteria(beginId,endId);
WriteResult WriteResult=mongoTemplate.remove(Query.Query(条件),collectionName);
返回writeResult.getN();
}
私有条件getCriteria(ObjectId beginId、ObjectId endId){
Date endDate=DateUils.getDayEnd(endId.getDate());
标准=标准,其中(“_id”).lte(endId);
if(beginId!=null){
标准:gte(beginId);
}
标准。和(“更新时间”).lte(结束日期);
退货标准;
}
偶尔,数据删除会失败,导致下次备份时出现重复的KeyException。使用Criteria类对象,而不是使用静态Criteria函数:
private Criteria getCriteria(ObjectId beginId, ObjectId endId) {
Date endDate = DateUils.getDayEnd(endId.getDate());
Criteria criteria = new Criteria();
if (beginId != null) {
criteria.and("_id").lte(endId).gte(beginId);
} else {
criteria.and("_id").lte(endId);
}
criteria.and("updateTime").lte(endDate);
return criteria;
}