Spring数据mongodb按两个字段的划分排序
Spring data mongodb sort by division of two fields
@Document
class RequestEntity {
private Long id;
private String name;
private String categoryCode;
private Double sourceAmount;
private Double targetAmount;
// getters, setters
}
我需要一个 RequestEntity where categoryCode='X'
列表并按 sourceAmount/targetAmount desc
对结果进行排序。
任何 @Query
或 mongoTemplate
示例将不胜感激。
我看了太多示例,但找不到任何仅返回集合本身的排序列表的示例。
好的,我通过更多的搜索找到了它,可能会对其他人有所帮助。
public List<RequestEntity> findBestBuyings(String categoryCode) {
Aggregation aggregation =
newAggregation(
RequestEntity.class,
match(Criteria.where("categoryCode").is(categoryCode)),
project(TenderEntity.class).and(ArithmeticOperators.Divide.valueOf("sourceAmount").divideBy("targetAmount")).as("rate"),
sort(Sort.Direction.DESC, "rate"));
return mongoTemplate.aggregate(aggregation, RequestEntity.class, RequestEntity.class).getMappedResults();
}
@Document
class RequestEntity {
private Long id;
private String name;
private String categoryCode;
private Double sourceAmount;
private Double targetAmount;
// getters, setters
}
我需要一个 RequestEntity where categoryCode='X'
列表并按 sourceAmount/targetAmount desc
对结果进行排序。
任何 @Query
或 mongoTemplate
示例将不胜感激。
我看了太多示例,但找不到任何仅返回集合本身的排序列表的示例。
好的,我通过更多的搜索找到了它,可能会对其他人有所帮助。
public List<RequestEntity> findBestBuyings(String categoryCode) {
Aggregation aggregation =
newAggregation(
RequestEntity.class,
match(Criteria.where("categoryCode").is(categoryCode)),
project(TenderEntity.class).and(ArithmeticOperators.Divide.valueOf("sourceAmount").divideBy("targetAmount")).as("rate"),
sort(Sort.Direction.DESC, "rate"));
return mongoTemplate.aggregate(aggregation, RequestEntity.class, RequestEntity.class).getMappedResults();
}