春天数据mongodb按字段划分排序

问题描述 投票:0回答:1
@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 的例子会很感激。

我看了太多的例子,但我找不到任何一个例子可以只返回集合本身的排序列表。

spring-boot spring-data-mongodb
1个回答
0
投票

好吧,我通过多搜索找到了,可能会帮助别人。

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.