Spring数据mongoRepository查询排序

pau*_*aul 7 java spring mongodb spring-data spring-data-mongodb

我想看看如何在我拥有的存储库方法中将一个排序引入Query注释.我已经在谷歌和这里看到了这段代码,但我无法使其有效

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

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

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

有什么建议吗?

Mac*_*iak 22

我不认为用@Query注释做到这一点.如果您不需要分页,可以使用存储库方法使用Sort参数:

@Query("{ state:'ACTIVE' }")
Job findOneActive(Sort sort);
Run Code Online (Sandbox Code Playgroud)

并使用它:

yourRepository.findOneActive(new Sort(Sort.Direction.DESC, "created"))
Run Code Online (Sandbox Code Playgroud)

  • 那是真的,那里还有改进的地方.好的是Spring源代码在github上,因此您可以随时编写增强功能并使用它创建pull请求 (2认同)
  • 如果我确实需要分页怎么办? (2认同)

luk*_*yer 6

只需使用@Query注释的排序参数。1 = 升序,-1 = 降序

    @Query(
        value  = ...,
        sort = "{'details.requestTime': -1}"
    )
Run Code Online (Sandbox Code Playgroud)