Spring数据mongoRepository查询排序

时间:2013-05-17 11:40:23

标签: java spring mongodb spring-data spring-data-mongodb

我希望看到如何在我拥有的存储库方法中将一个排序引入Query注释。 我已经在Google和这里看到了这段代码,但我无法使其正常工作

@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
    Job findOneActiveOldest();

@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();

我知道通过分页我可以做到,但在某些情况下我不需要paginate,所以我想知道如何使用Query注释。

有什么建议吗?

3 个答案:

答案 0 :(得分:18)

我不认为用@Query注释做到这一点。如果您不需要分页,则可以使用Sort参数:

来创建存储库方法
@Query("{ state:'ACTIVE' }")
Job findOneActive(Sort sort);

并使用它:

yourRepository.findOneActive(new Sort(Sort.Direction.DESC, "created"))

答案 1 :(得分:1)

只需使用@Query批注的sort参数。 1 = ASC,-1 = DESC

    @Query(
        value  = ...,
        sort = "{'details.requestTime': -1}"
    )

答案 2 :(得分:0)

如果您还想进行分页,请使用 Pageable 作为方法参数而不是Sort。尝试以下代码:

@Query("{ state:'ACTIVE' }")
Job findOneActive(Pageable pageable);

yourRepository.findOneActive(new PageRequest(0, 1, new Sort(Sort.Direction.DESC,"created")));