我们可以为MongoDB集合编写“单一”查询(如SQL中的子查询/嵌套查询)吗?

时间:2016-02-29 11:58:33

标签: java mongodb morphia

我正在寻找一种方法,我的应用程序可以在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()来激发第二个查询。

0 个答案:

没有答案