2016-07-30 10 views
1

新しい配列フィールドをパイプラインに投影するSpring Data MongoDBを使用して集約パイプラインを作成しようとしています。 Springデータを使用してこれをどのように達成できますか?次のように私は複製しようとしていますSpringデータで配列フィールドを投影するには

パイプラインステージは、次のとおりです。

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

答えて

1

私は同じ問題を抱えていたし、解決策を見つけました。あなたが提案し、この答えのようにCustomAggregationOperationクラスを作成する必要があります。

new CustomAggregationOperation(new BasicDBObject("$project", 
    new BasicDBObject("aceId", 1) 
     .appending("startActivityDateTime", 1) 
     .appending("lastActivityDateTime", 1) 
     .appending("eventInfo", 
     new Object[]{ 
      "$applicationInfo", 
      "$riskAssessmentInfo", 
      "$policyInfo", 
      "$submissionInfo"} 
     ) 
)); 
を: 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); 
    } 

}

を次のように次に、あなたの投影段階を達成することができます

関連する問題