如何在 spring mongodb 聚合中写入单个子 ID 字段

How to write single sub id field in spring mongodb aggregation

我正在尝试从 Spring 数据 Mongo 聚合中获取以下查询:

{
  "_id": {
    "year": "$_id.year"
  },
  "result": {
    "$push": {
      "rs": "$_id.rs",
      "vl": "$vl"
    }
  }
}

我试过以下方法:

GroupAggregation as = group( "_id.year" ).push( new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ) ).as( "result" );

但是它在“_id”字段下没有子字段"year"的地方生成这个表达式:

{ "$group" : { "_id" : "$_id.year" , "result" : { "$push" : { "rs" : "$_id.rs" , "vl" : "$vl"}}}}  

关于如何使用 spring 数据 mongodb 聚合获得该查询的任何想法?

我在 api 中没有看到任何挂钩来访问以前的 _id 值。

您可以使用 AggregationOperation 使用 mongodb 类型创建 $group 阶段。

类似于

AggregationOperation group = new AggregationOperation() {
       @Override
       public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
          return new BasicDBObject("$group", new BasicDBObject("_id", new BasicDBObject("year", "$_id.year" )).append("result", new BasicDBObject("$push", new BasicDBObject( "rs", "$_id.rs" ).append( "vl", "$vl" ))));
    } 
};