首页 > 解决方案 > 向 mongo 聚合的结果添加新字段

问题描述

当我尝试添加具有特定值的新字段时,它在 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(....)

请问有什么帮助吗?

标签: springmongodbaggregation-framework

解决方案


$addFields还不是 spring 数据支持库的一部分,https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation.supported-aggregation-operations

我之前遇到过同样的问题,最后我只是将它作为原始查询运行。

 BasicDBList doc = (BasicDBList) JSON.parse(aggregateQuery.toString()); //where aggregateQuery is a StringBuilder that prepares the query string.
 List<DBObject> pipeline = new ArrayList<>();

    for (Object aDoc : doc) {
        DBObject stage = (DBObject) aDoc;
        pipeline.add(stage);
    }
    AggregationOutput output =  mongoTemplate.getDb().getCollection("collName").aggregate(pipeline);

推荐阅读