2017-06-02 61 views
0

我試圖從春數據蒙戈聚合得到以下查詢:如何寫春天的MongoDB聚集單個子id字段

{ 
    "_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"}}}} 

有關如何獲得q uery使用spring數據mongodb聚合?

回答

0

我在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")))); 
    } 
}; 
+0

正如你所說,似乎是沒有辦法做到這一點在純Spring數據的MongoDB。你的解決方法正在工作。 – Tanrikut