当我尝试添加具有特定值的新字段时,它在mongo shell上运行良好:
db.getCollection('collName').aggregate([
{ "$group" : { "_id" : "$idcpt" , "sum" : { "$sum" : "$val"}}},
{$addFields : {idcpt : 1092}}
])
但是当我尝试在春季使用org.springframework.data.mongodb.core.aggregation.Aggregation进行这种聚合时
我在使用“ addFields”时遇到困难,我找不到正确的组合:
Aggregation.match(criteria),
Aggregation.group("idcpt").sum("val").as("sum"),
Aggregation.fields(....)
有什么帮助吗?
答案 0 :(得分:0)
const [this.id, x, y, width, height] = line.replace(/[^\d]+/g, ' ').split(' ');
尚未包含在Spring数据支持库中,https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation.supported-aggregation-operations。
我之前也遇到过同样的问题,最终我只是将其作为原始查询运行。
$addFields
答案 1 :(得分:0)
我遇到了同样的问题,我在@Bajal提供的链接中发现可以创建一个项目并使用'andExpression'同时添加新字段
Aggregation.project("_id", ...).andExpression("1092").as("idcpt");
这是个主意,但不起作用。 要使其正常工作,您需要稍微更改表达式:
Aggregation.project("_id", ...).andExpression("0 + [0]", 1092).as("idcpt");
我猜想andExpression需要一个表达式来计算,但是我并没有更加仔细地检查。
答案 2 :(得分:0)
基于spring文档,我发现我们可以如下使用Aggregation。
聚合聚合= Aggregation.newAggregation( Aggregation.project(“ test”,...)。andExpression(“ [0]”,1092).as(“ idcpt”)));
像这样
聚合聚合= Aggregation.newAggregation( Aggregation.project(“ test”,...)。和(1092).asLiteral()。as(“ idcpt”)));
希望能为您提供帮助。