我可以在mongodb控制台的push操作中使用sum。但是,我不明白如何使用mongotemplate实现同样的功能?
$group : {
_id: "$some_id",
my_field: { $push : {$sum: "$my_field" }}
}
我使用的代码如下:
Aggregation aggregation =
Aggregation.newAggregation(
match(matchingCriteria),
group("some_id")
.count()
.as("count")
.push("my_field")
.as("my_field")
project("some_id", "count", "my_field"));
AggregationResults<MyModel> result =
mongoTemplate.aggregate(aggregation, "my_collection", MyModel.class);
问题是我想要我的\字段的和,但是它作为\字段的数组出现在这里(因为我直接使用push)。我能够实现同样的推操作内使用上述总和。但不能将其用于mongotemplate。我的应用程序是在 Spring 启动。我也查看了这些方法的文档,但找不到太多。
此外,我还尝试在字段上直接使用.sum()(不使用push),但这对我不起作用,因为我的\u字段是一个内部对象,它不是一个数字,而是分组后的一个数字数组。这就是为什么我需要使用推和组合。
任何有关这方面的帮助都是感激的。提前谢谢。
1条答案
按热度按时间moiiocjp1#
我可以使用下面的代码来实现这一点:
我在投影阶段使用了acculatoroperators.sum,对内部字段求和,得到所需的输出。然后我将其传递到分组阶段,在分组阶段中,当我需要该数据时,我进行计数聚合,然后必须将生成的所有数据投影为输出。