public long countBetweenFields(String userId){ Criteria criteria = new Criteria() { @Override public DBObject getCriteriaObject() { DBObject obj = new BasicDBObject(); obj.put("$where", "this.lastUpdateTime > this.lastReadTime"); return obj; } }; Query query = new Query(); query.addCriteria(Criteria.where("userId").is(userId)); query.addCriteria(criteria); return mongoTemplate.count(query,"forum"); }