文件示例:
{
"_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()?或者还有其他解决办法吗?
暂无答案!
目前还没有任何答案,快来回答吧!