Java 结合查询结果和行数与Spring MongoDB聚合

Java 结合查询结果和行数与Spring MongoDB聚合,java,spring,pagination,aggregation,spring-data-mongodb,Java,Spring,Pagination,Aggregation,Spring Data Mongodb,我试图用SpringDataMongoDB实现一个典型的分页用例,它提供查询结果的页面和最大可用文档数。我有一个有效的解决方案,但是,我不确定这是合理的还是有效的还是 那么,我的脚步到目前为止 使用筛选条件创建匹配操作 分组并统计找到的文档数 添加实际信息(本例中为简单ID) 展开ID列表 对管道应用skip和limit 代码: List<AggregationOperation> ops = new ArrayList<>(); ops.add(match(filt

我试图用SpringDataMongoDB实现一个典型的分页用例,它提供查询结果的页面和最大可用文档数。我有一个有效的解决方案,但是,我不确定这是合理的还是有效的还是

那么,我的脚步到目前为止

  • 使用筛选条件创建匹配操作
  • 分组并统计找到的文档数
  • 添加实际信息(本例中为简单ID)
  • 展开ID列表
  • 对管道应用
    skip
    limit
  • 代码:

     List<AggregationOperation> ops = new ArrayList<>();
     ops.add(match(filterCriteria));
     ops.add(Aggregation.group().count().as("total").addToSet("userId").as("userId"));
     ops.add(Aggregation.unwind("userId"));
     ops.add(skip(page*count));
     ops.add(limit(count));
    
    我更喜欢这种没有冗余的东西:

    { total: 13, 
      userIds: [ 100,101,102,...]
    }
    
    通过聚合获得第二种形式是否可能(且合理)?聚合是实现这一目标的合适方法,还是有更好的方法? 除了冗余之外,是否有任何东西反对使用
    展开的第一个解决方案

    { total: 13, 
      userIds: [ 100,101,102,...]
    }