@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();
}