如何从分页mongo db java的聚合结果中计算元素总数?

niwlg2el  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(258)

文件示例:

{
"_id":{
  "$oid":"5e6abd223034d0a2823bdd8c"
},
"field_a":"123",
"client":"client"
},
{
"_id":{
  "$oid":"5e6abd223034d0a2823bdd8a"
 },
"field_a":"1234",
"field_b":"aaaa",
"client":"client"
},
{
"_id":{
  "$oid":"5e6abd223034d0a2823bdd8f"
},
"field_a":"12345",
"field_b":"aaaa",
"client":"client"
}}

这是我的密码:

Criteria criteria = new Criteria("client").is(client);
query.addCriteria(criteria);

Aggregation aggregation = Aggregation.newAggregation(
    Aggregation.match(criteria),
    Aggregation.group("client", "field_b").addToSet("field_a").as("field_a"),
    Aggregation.skip((long) (paging.getPageNumber() * paging.getPageSize())),
    Aggregation.limit(paging.getPageSize())
);

List<MyClass> data = mongoTemplate.aggregate(aggregation, "documents", MyClass.class).getMappedResults();
PageableExecutionUtils.getPage(data, paging, () -> mongoTemplate.count(query, MyClass.class));

结果:

{
total: 3
content: {
{
"field_a":"123",
"client":"client"
},
{
"field_a":"1234",
"field_b":"aaaa",
"client":"client"
},}
}

总数应该是2。因为当我使用分页的时候,例如,如果我想一页一个元素,我会有3页,但我应该有2页。
所以我需要按字段\b对数据进行分组,得到分组数据的元素总数。由于我的代码,我得到3号。但我应该得到2。如何将此条件group by添加到mongotemplate.count()?或者还有其他解决办法吗?

暂无答案!

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

相关问题