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 对结果进行排序。

任何 @QuerymongoTemplate 示例将不胜感激。

我看了太多示例,但找不到任何仅返回集合本身的排序列表的示例。

好的,我通过更多的搜索找到了它,可能会对其他人有所帮助。

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