spring-data-mongodb-2.20以上 MongoTemplate.count() 计数不对
//计数方法 public Long count(Query query,Class clazz){ return mongoTemplate.count(basicQuery, clazz); };
下面是出现 计数不对 的重新 只要在spring-data-mongodb-2.20以上 就会出现这个问题
Query query=new Query(); query.skip(0); query.limit(10); long conut=count(query,Object.class); //这个count的值始终是10 其实数据库的数据不止是10
如何解决这个问题
//修改计数方法解决分页总数出错 public Long count(Query query,Class clazz){ /** * 注意:查询偏移量(offset)和限制条数(limit)可能会直接影响最终查询文档的数量,因为这些值会传递到服务器, * 并可能限制服务器执行计数操作的范围和顺序。所以要使用没有分页数据的对象来查。 */ BasicQuery basicQuery = new BasicQuery(query.getQueryObject().toJson()); return mongoTemplate.count(basicQuery, clazz); };
注意:查询偏移量(offset)和限制条数(limit)可能会直接影响最终查询文档的数量,因为这些值会传递到服务器, 并可能限制服务器执行计数操作的范围和顺序。所以要使用没有分页数据的对象来查。
所以问题的解决办法是把分页的offset和limit去掉即可