2017-04-05 44 views
0
Aggregation aggregation = newAggregation(
    group("$meta_data.user_data.first_name", "$meta_data.user_data.last_name", "$meta_data.user_data.profile_pic", "$user_id") 
); 
AggregationResults<UsersMongoResult> groupResults = mongoTemplate.aggregate(aggregation, "chatuser_log", UsersMongoResult.class); 

public class UsersMongoResult { 
     private String first_name; 
     private String last_name; 
     private String profile_pic; 
     private String user_id; 
    } 

當我將結果映射到POJO類只有user_id映射。如何將其他字段映射到特定的文件。我也無法在互聯網上找到解決方案。如何將聚合結果映射到java pojo

回答

1

您可以嘗試下面的聚合來獲得所需的結果。

Spring默認使用部分字段名作爲鍵名。例如,user_data.first_name將是meta_data.user_data.first_name的關鍵名稱,也是映射失敗的原因。

更新使用MongoTemplateFieldsgroup變體將字段鍵名顯式映射爲java類Spring字段的名稱以便正確映射它們。

Aggregation aggregation = newAggregation(
      group(Fields.fields().and("first_name", "meta_data.user_data.first_name").and("last_name","meta_data.user_data.last_name").and("profile_pic", "meta_data.user_data.profile_pic").and("user_id", "user_id")) 
    ); 
+0

我想你的選項,但仍然得到空值 –

+0

對不起,鍵已經映射到'$ group'階段之前,我試圖重寫它們在'$ project'。現在改爲在分組階段使用類似的代碼。你現在可以試試嗎? – Veeram

+0

謝謝。它正在工作 –