Java Spring Data+Mongo-无组字段的和
我有一个这样的匹配标准-Java Spring Data+Mongo-无组字段的和,java,spring,mongodb,mongodb-query,spring-data,Java,Spring,Mongodb,Mongodb Query,Spring Data,我有一个这样的匹配标准- Criteria criteria = new Criteria() .and("paidMobileMetadata").in(metadataList) .and("localDate").gt(startDate).lte(endDate); Aggregation agg = Aggregation.newAggregation( Aggregation.match
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")
);
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")
);
现在我想得到场的和,也就是说,钱属于上面的标准,而不在某个场上分组
早些时候,我也遇到过同样的问题,我必须在某个领域对这个匹配标准进行分组,我是这样做的-
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")
);
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")
);
但是在这里我不能分组,在mongo中是否有任何方法可以分组所有文档,而没有任何字段
解释:
假设500行/doc属于我的标准,并且都有money字段。我想将所有500个money相加,不分组
当我试着这样做的时候-
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")
);
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")
);
给我一个例外,说聚合字段不能为null或空 只需传入而不带参数,因为不提供参数等于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")
);
您能展示一些示例文档和您的预期输出吗?@chridam已经解释了这个问题。