结合查询结果和行数与springmongodb聚合

vsikbqxv  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(186)

我试图用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));

我正在使用 unwind 因为我不知道怎么通过考试 total count 管道沿线。生成的linkedhashmap如下所示(json样式)

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

我更喜欢这样没有冗余的东西:

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

通过聚合获得第二种形式是否可能(合理)?聚合是实现这一点的合适方法,还是有更好的方法?有什么反对使用第一种解决方案的吗 unwind 除了裁员?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题