我有这样的匹配标准 -
Criteria criteria = new Criteria()
.and("paidMobileMetadata").in(metadataList)
.and("localDate").gt(startDate).lte(endDate);
现在我想得到一个字段的总和说“钱”属于上面的标准而不分组某些字段。
早些时候我有同样的问题,我必须在某个领域对这个匹配标准进行分组,我这样做了 -
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(new Criteria()
.and("paidMobileMetadata").in(metadataList)
.and("localDate").gt(startDate).lte(endDate)),
Aggregation.group("anyField").sum("money").as("total")
);
但是在这里我不能把它分组,mongo中有没有办法将所有文档分组,没有任何字段。
Explaination:
假设500行/ doc属于我的标准,并且都有金钱领域。我想要所有500个钱的总和,没有分组。
当我尝试这样的时候 -
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(new Criteria()
.and("paidMobileMetadata").in(metadataList)
.and("localDate").gt(startDate).lte(endDate)),
Aggregation.group(null).sum("money").as("total")
);
给我异常说聚合字段不能为空或空!
答案 0 :(得分:3)
只传入没有参数,因为没有提供一个等于null:
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(new Criteria()
.and("paidMobileMetadata").in(metadataList)
.and("localDate").gt(startDate).lte(endDate)),
Aggregation.group().sum("money").as("total")
);