我正在寻找一种方法,我的应用程序可以在MongoDB中触发单个查询并获取少量记录(偏移量,'n'记录)和记录总数(全部计数)。 这可以在不加载DB的所有记录的情况下实现吗?我需要一种方法来获取数据的一部分以及该集合中所有记录的计数? 我的意图是加载有限数量的数据,而不会在MongoServer上增加额外的负载,并且只需要一次点击就可以获得数据。 感谢。
例如: public ResultSet findByAccountId(String accountId,int offset,int limit){
Query<ABC> query = ds.createQuery(entityClazz)
.field("accountId").equal(accountId)
.field("deleted").equal(false);
List<ABC> ABCs = query.order("modified")
.offset(offset)
.limit(limit)
.asList();
int total;
if(ABCs.size()==limit) {
total = (int) getABCsCountByAccountId(accountId,offset);
} else {
total = ABCs.size();
}
return new ResultSet<ABC>(ABCs, offset, total);
}
public long getABCsCountByAccountId(String accountId, int offset) {
Query<TestScript> query = ds.createQuery(entityClazz)
.field("accountId").equal(accountId)
.field("deleted").equal(false);
query.offset(offset);
long totalABCsInAccount = query.countAll();
log.info("totalABCsInAccount = query.countAll(): "+totalABCsInAccount);
return totalABCsInAccount;
}
这里我不想通过调用另一个方法getABCsCountByAccountId()来激发第二个查询。