将聚合查询结果映射到正确的 POJO 属性
Map aggregate query result to correct attributes of POJO
我有一个名为 Location 的集合,它有几个我只想获取国家代码和国家名称的属性。
当我在 Spring 数据中使用以下聚合查询时,所有属性都映射到 Location.java 的 _id 属性,而不是列表的单个 countryCode 和 countryName 属性。请帮我解决同样的问题。
@Repository
public class AggregateQueryRepository {
@Autowired
ReactiveMongoTemplate reactiveMongoTemplate;
public Flux<Location> getAllCountryCodeAndCountry() {
Aggregation aggregation = newAggregation(group("countryCode", "countryName")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);
}
}
目前结果的每个对象如下所示:
{ "_id": "{\"countryCode\": \"IN\", \"countryName\": \"India\"}" }
我想将其映射到如下所示:
{
{ "_id": null,
"countryCode": "ÏN"
"countryName": "India"
},
....
.....
}
如果一定要单独拥有,可以考虑使用$first
aggregation accumulator:
Aggregation aggregation = newAggregation(
group("countryCode", "countryName")
.first("countryCode").as("countryCode")
.first("countryName").as("countryName")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);
...或者 $replaceRoot aggregation stage:
Aggregation aggregation = newAggregation(
group("countryCode", "countryName"),
replaceRoot("_id")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);
我有一个名为 Location 的集合,它有几个我只想获取国家代码和国家名称的属性。
当我在 Spring 数据中使用以下聚合查询时,所有属性都映射到 Location.java 的 _id 属性,而不是列表的单个 countryCode 和 countryName 属性。请帮我解决同样的问题。
@Repository
public class AggregateQueryRepository {
@Autowired
ReactiveMongoTemplate reactiveMongoTemplate;
public Flux<Location> getAllCountryCodeAndCountry() {
Aggregation aggregation = newAggregation(group("countryCode", "countryName")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);
}
}
目前结果的每个对象如下所示:
{ "_id": "{\"countryCode\": \"IN\", \"countryName\": \"India\"}" }
我想将其映射到如下所示:
{
{ "_id": null,
"countryCode": "ÏN"
"countryName": "India"
},
....
.....
}
如果一定要单独拥有,可以考虑使用$first
aggregation accumulator:
Aggregation aggregation = newAggregation(
group("countryCode", "countryName")
.first("countryCode").as("countryCode")
.first("countryName").as("countryName")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);
...或者 $replaceRoot aggregation stage:
Aggregation aggregation = newAggregation(
group("countryCode", "countryName"),
replaceRoot("_id")
);
return reactiveMongoTemplate.aggregate(aggregation, "location", Location.class);