我试图用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
除了裁员?
暂无答案!
目前还没有任何答案,快来回答吧!