我有一个包含类别和文件大小的文档的数据库。我想查询并生成每个类别的不同类别和总文件大小的计数。我使用的是spring-data,我可以使用2个聚合查询完成我想要的操作。
我的问题是这个......是否可以在单个查询中执行此操作,以便我只有一个列表,其中包含类别名称,存储的次数以及文件大小的总和?
找到了答案
TypedAggregation<CatInfo> agg = newAggregation(CatInfo.class,
group("category").count().as("count").sum("bytes").as("bytes"),
project("count","bytes").and("category").previousOperation(),
sort(Sort.Direction.ASC,"category"));
AggregationResults<FileCount> results = mongoOps.aggregate(agg, FileCount.class);
// FileCount class has category and count
List<FileCount> fclist = results.getMappedResults();
所以我不再需要这个单独的查询来获取总文件大小