Spring Boot,MongoDB,Pageable,按对象中的自定义方法排序

     2023-04-14     216

关键词:

【中文标题】Spring Boot,MongoDB,Pageable,按对象中的自定义方法排序【英文标题】:Spring Boot, MongoDB, Pageable, sort by a custom method in the object 【发布时间】:2020-04-22 14:27:46 【问题描述】:

比如说我有以下设置,

这样的模型:

public class Post 

    @Id
    private String id;
    private String post;
    private List<Vote> votes = new ArrayList<>();

    // Getters & Setters...
    public double getUpVotes() 
        return votes.stream().filter(vote -> vote.getDirection() == 1).mapToInt(Vote::getDirection).count();
    

public class Vote 

    private short direction;

    // Getters & Setters...

然后是这样的存储库

@Repository
public interface PostRepository extends PagingAndSortingRepository<Post, String> 

    List<Post> findAll(Pageable pageable);

并说我想通过getter方法getUpVotes()的结果对帖子进行排序

我尝试了以下localhost:3005/opinion?page=0&amp;size=20&amp;sort=upVotes,但它不起作用。

【问题讨论】:

【参考方案1】:

排序文档可以指定对现有字段进行升序或降序排序 ...

https://docs.mongodb.com/manual/reference/method/cursor.sort/#sort-asc-desc

解决方法:您可以执行MongoDB aggregation,您可以在其中添加具有计算值的新字段并按此值排序:

db.post.aggregate([
  
    $addFields: 
      upVotes: 
        $size: 
          $filter: 
            input: "$votes.direction",
            cond: 
              $eq: [ "$$this", 1 ]
            
          
        
      
    
  ,
  
    $sort: 
      upVotes: 1
    
  
])

MongoPlayground | $project

弹簧数据

@Autowired
private MongoTemplate mongoTemplate;
...

Aggregation aggregation = Aggregation.newAggregation(addFields, sort);
List<Post> result = mongoTemplate
                       .aggregate(aggregation, mongoTemplate.getCollectionName(Post.class), Post.class)
                       .getMappedResults();

【讨论】:

Spring Boot MongoDB 连接 bean

】SpringBootMongoDB连接bean【英文标题】:SpringBootMongoDBconnectionbean【发布时间】:2016-05-1214:40:02【问题描述】:我有这样的情况。我使用的是Springboot1.3.2,我已经在我的电脑上安装了MongoDB我添加了依赖org.springframework.boot:spring-boot-sta... 查看详情

如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

】如何在spring-boot中禁用spring-data-mongodb自动配置【英文标题】:Howtodisablespring-data-mongodbautoconfigurationinspring-boot【发布时间】:2015-04-2903:39:04【问题描述】:有没有人试过在spring-boot中禁用mongodb的自动配置?我正在尝试使用spring-d... 查看详情

Spring Boot MongoDB 使用加密字段

】SpringBootMongoDB使用加密字段【英文标题】:SpringbootMongoDBworkingwithencryptedfields【发布时间】:2021-12-1018:37:54【问题描述】:我有一个springboot项目(版本2.5.5),我正在使用spring-boot-starter-data-mongodb依赖项来处理MongoDB。我有一个包... 查看详情

spring boot mongodb 多数据库

】springbootmongodb多数据库【英文标题】:springbootmongomultipledatabase【发布时间】:2018-02-0513:14:12【问题描述】:如何配置application.properties以使用多个mongoTemplate我当前的配置。spring.data.mongodb.host=localhostspring.data.mongodb.port=27017spring.da... 查看详情

使用 Spring Boot 记录 MongoDB 查询

】使用SpringBoot记录MongoDB查询【英文标题】:LogMongoDBquerieswithSpringBoot【发布时间】:2017-01-0603:21:38【问题描述】:是否可以在我的SpringBoot应用程序中记录所有MongoDB查询?我试过这个:logging.level.org.springframework.data.document.mongodb=IN... 查看详情

spring-boot mongodb 4.0 兼容性

】spring-bootmongodb4.0兼容性【英文标题】:spring-bootmongodb4.0compatibility【发布时间】:2019-03-1014:08:14【问题描述】:spring-boot的哪个版本与MongoDB4.0兼容?有没有一种可取的方式来使用spring-boot2.0.5RELEASE和MongoDB4.0?或者更好地使用sprin... 查看详情

Spring Boot 自定义查询 MongoDB

】SpringBoot自定义查询MongoDB【英文标题】:SpringbootcustomqueryMongoDB【发布时间】:2019-07-0704:31:56【问题描述】:我有这个MongoDb查询:db.getCollection(\'user\').find($and:["status":"ACTIVE","last_modified":$lt:newDate(),$gte:newDate(newDate().setDate 查看详情

spring boot + mongodb + 骆驼路由连接问题

】springboot+mongodb+骆驼路由连接问题【英文标题】:springboot+mongodb+camelrouteconnectionissue【发布时间】:2018-08-2513:08:53【问题描述】:我是骆驼路由的新手,试图创建一个将读取文件内容并插入到mongodb的路由,它有一些问题,似乎... 查看详情

MongoDB 的 Spring Boot Micrometer 指标

】MongoDB的SpringBootMicrometer指标【英文标题】:SpringBootMicrometermetricsforMongoDB【发布时间】:2020-07-1410:45:31【问题描述】:我用的是springboot2.2.5+micrometer1.3.5+starter-data-mongodb在“io.micrometer.core.instrument.binder.mongodb”下,我可以看到2个... 查看详情

spring boot mongodb连接错误

】springbootmongodb连接错误【英文标题】:springbootmongodbconnectionerror【发布时间】:2016-09-1311:19:27【问题描述】:我尝试将我的SpringBoot应用程序连接到mongodb,但我收到驱动程序类的连接错误。这里是代码的一部分。我的pom.xml:<p... 查看详情

如何避免使用 Spring-Boot 下载嵌入式 MongoDb

】如何避免使用Spring-Boot下载嵌入式MongoDb【英文标题】:HowtoavoidembeddedMongoDbdownloadwithSpring-Boot【发布时间】:2018-11-0523:46:30【问题描述】:在我的项目中,我使用的是spring-boot和嵌入式MongoDb,请参阅我的pom.xml文件:<?xmlversion="... 查看详情

无法在 spring-boot 中禁用 spring-data-mongodb-reactive 自动配置

】无法在spring-boot中禁用spring-data-mongodb-reactive自动配置【英文标题】:Cannotdisablespring-data-mongodb-reactiveautoconfigurationinspring-boot【发布时间】:2020-08-0406:51:02【问题描述】:无论我尝试什么,我都无法禁用spring-data-mongodb-reactive的自... 查看详情

Spring Boot MongoDB 副本集异常

】SpringBootMongoDB副本集异常【英文标题】:SpringbootMongoDBreplicasetexception【发布时间】:2019-02-1300:35:40【问题描述】:我正在使用SpringBoot2.0.3和MongoDB。我有2个数据库需要在应用程序中连接。每个数据库都有自己的副本集。我没有... 查看详情

Spring Boot MongoDB REST - 自定义存储库方法

】SpringBootMongoDBREST-自定义存储库方法【英文标题】:SpringBootMongoDBREST-CustomRepositoryMethods【发布时间】:2015-08-1703:21:11【问题描述】:我正在使用spring-boot-starter-data-rest和spring-boot-starter-data-mongodb根据here给出的教程。我正在尝试为... 查看详情

Spring Boot MongoDb 复杂查询

】SpringBootMongoDb复杂查询【英文标题】:SpringbootMongoDbcomplexquery【发布时间】:2019-10-0515:32:18【问题描述】:我一直在学习自己在SpringBoot中的MongoDB实现。但是,我遇到了复杂查询的问题。我找不到任何正确的解决方案来解决如何... 查看详情

基于spring boot的项目中的spring data mongodb配置

】基于springboot的项目中的springdatamongodb配置【英文标题】:springdatamongodbconfigurationinspringbootbasedproject【发布时间】:2014-12-2709:25:09【问题描述】:我正在使用springboot编写代码,它将csv作为输入并创建mongodb集合并将其插入到mongodb... 查看详情

Spring Boot MongoDB 应用配置

】SpringBootMongoDB应用配置【英文标题】:Springbootmongodbapplicationconfiguration【发布时间】:2019-10-1618:23:25【问题描述】:我正在创建SpringBoot微服务应用程序。一项微服务使用springboot和MySQL和hibernate。另一个微服务使用springboot和mongod... 查看详情

如何配置两个实例mongodb使用spring boot和spring data

】如何配置两个实例mongodb使用springboot和springdata【英文标题】:Howtoconfiguretwoinstancemongodbusespringbootandspringdata【发布时间】:2017-04-2709:57:15【问题描述】:第一个实例是嵌入的MongoDb,第二个实例是实时的MongoDb。它如何配置使用弹... 查看详情