Spring Data MongoDB @Query with a Limit

问题描述 投票:0回答:1

有没有办法为 Java 或 Kotlin

@Query
类中的
MongoRepository
方法添加限制?

我的查询基本上如下,我试图看看是否有一种方法可以将限制放入此级别的查询中,而不是稍后在服务层中处理它。

@Query("{'area': { \$eq: ?0 }, \$and: [ /*some other logic*/ ]}, sort: {'dateUploaded': -1}, limit: ?1")
fun findLatestUploads(area: String, limit: Int): List<AudioFile>

上面的代码实际执行,但不限制它为我在测试时放置的

limit = 5
值。

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

在 Spring Data MongoDB 中,

@Query
注释不直接支持
limit
参数作为查询字符串的一部分。但是您可以通过相应地重命名该方法来将返回的结果限制为所需的数量。例如。如果你想检索前 5 个结果,你可以这样命名方法。 Spring Data 遵循约定优于配置的方法,即从方法名称解释所需的结果。

interface AudioFileRepository : MongoRepository<AudioFile, String> {
    fun findTop5ByAreaOrderByDateUploadedDesc(area: String): List<AudioFile>
}

记下方法名称

findTop5ByAreaOrderByDateUploadedDesc

但是,此方法显然将结果数量限制硬编码为 5。如果您想动态执行此操作,唯一的选择是通过创建

PageRequest
对象在服务层中执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.