为什么我不能使用mongoTemplate.remove

时间:2019-09-05 07:22:58

标签: java mongodb

我使用过Java spring-boot版本1.5.14.RELEASE,而spring-data-mongodb版本是1.10.13-RELEASE。我正在尝试进行数据存档。

我将通过beginIdendId在主MongoDB中找到数据,然后将数据同步到其他库中,最后,我将通过beginId和{{ 1}}。

endId

有时,数据删除失败,导致下次备份时出现public int del(ObjectId beginId, ObjectId endId, String collectionName) { Criteria criteria = getCriteria(beginId, endId); WriteResult writeResult = mongoTemplate.remove(Query.query(criteria), collectionName); return writeResult.getN(); } private Criteria getCriteria(ObjectId beginId, ObjectId endId) { Date endDate = DateUils.getDayEnd(endId.getDate()); Criteria criteria = Criteria.where("_id").lte(endId); if (beginId != null) { criteria.gte(beginId); } criteria.and("updateTime").lte(endDate); return criteria; }

1 个答案:

答案 0 :(得分:0)

代替使用静态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;
}