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映射。如何将其他字段映射到特定文件。我也无法在互联网上找到解决方案。
答案 0 :(得分:1)
您可以尝试以下聚合来获得所需的结果。
Spring默认是使用部分字段名作为键名。例如,user_data.first_name
将是meta_data.user_data.first_name
的关键名称,这也是映射失败的原因。
更新以使用MongoTemplate
Fields
group
变量将字段键名称显式映射为spring的java类字段名称以正确映射它们。
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"))
);