Java Spring数据mongoRepository查询排序
我想看看如何在我已有的存储库方法中的查询注释中引入排序。 我已经在谷歌和这里看到了这段代码,但我无法让它工作Java Spring数据mongoRepository查询排序,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我想看看如何在我已有的存储库方法中的查询注释中引入排序。 我已经在谷歌和这里看到了这段代码,但我无法让它工作 @Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)") Job findOneActiveOldest(); @Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }") Job findOneActiveOldest(); 我知道使用分页可以实现
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
我知道使用分页可以实现,但在某些情况下我不需要分页,所以我想知道如何使用查询注释实现
有什么建议吗?我认为用@Query注解是不可能的。如果不需要分页,只需使存储库方法使用排序参数:
@Query({state:'ACTIVE'})
作业查找活动(排序);
并使用它:
yourRepository.findOneActive(新排序(Sort.Direction.DESC,“created”))
如果您还想进行分页,则使用可分页作为方法参数,而不是排序。请尝试以下代码:
@Query("{ state:'ACTIVE' }")
Job findOneActive(Pageable pageable);
yourRepository.findOneActive(new PageRequest(0, 1, new Sort(Sort.Direction.DESC,"created")));
只需使用
@Query
注释的sort参数即可。1=ASC,-1=DESC
@Query(
value = ...,
sort = "{'details.requestTime': -1}"
)
有什么问题吗?为什么你不能让它不工作呢?第一个JSONParse异常,第二个不返回任何东西。这不是你的问题吗?不,看一下这个问题的第二个答案,仔细阅读我的问题/回答。这是一个很好的解决方案。谢谢!。我仍然无法相信bas是如何为Mongo提供查询注释的。这是真的,它仍然有改进的地方。好消息是Spring源代码在github上,所以您可以随时编写增强代码并使用它创建pull请求。如果我真的需要分页,该怎么办?@MaciejWalkowiak如何对此进行限制。请注意,如果使用“限制”和“偏移”,它将不起作用,这是解决方法。如何执行“分组依据”?这是正确的回答,没有解决方法!卓越的。