2016-07-30 62 views
1

我正在嘗試使用Spring Data MongoDB創建一個聚合管道,該管道將新的數組字段放入管道中。我如何使用Spring Data來完成這個任務?如何使用Spring數據投影數組字段

我試圖複製流水線級如下:

{ 
    $project: { 
     "aceId": 1,  
     "startActivityDateTime": 1, 
     "lastActivityDateTime": 1, 
     "eventInfo": [ 
      "$applicationInfo", 
      "$riskAssessmentInfo", 
      "$policyInfo", 
      "$submissionInfo" 
     ] 
    } 
}, 

回答

1

我有同樣的問題,並找到了解決辦法。你必須創建一個CustomAggregationOperation類作爲這個回答表明: https://stackoverflow.com/a/29186539/5033846

public class CustomProjectAggregationOperation implements AggregationOperation { 
    private DBObject operation; 

    public CustomProjectAggregationOperation (DBObject operation) { 
     this.operation = operation; 
    } 

    @Override 
    public DBObject toDBObject(AggregationOperationContext context) { 
     return context.getMappedObject(operation); 
    } 

}

然後你就可以實現你的投影階段如下:

new CustomAggregationOperation(new BasicDBObject("$project", 
    new BasicDBObject("aceId", 1) 
     .appending("startActivityDateTime", 1) 
     .appending("lastActivityDateTime", 1) 
     .appending("eventInfo", 
     new Object[]{ 
      "$applicationInfo", 
      "$riskAssessmentInfo", 
      "$policyInfo", 
      "$submissionInfo"} 
     ) 
));