如何在Spring Data MongoDB的@Query注解中添加Limit限制?
在Spring Data MongoDB的@Query中设置Limit限制的正确方法
当然可以直接在@Query层面设置limit,不过你当前的写法有问题——sort和limit属于查询选项,不能直接塞进查询条件的JSON字符串里,这就是为什么limit=5没生效的原因。
下面给两种可行的实现方式:
方式一:利用@Query注解的内置属性
直接通过注解的sort和limit参数来配置,代码示例:
@Query( value = "{'area': ?0, /* 这里放你的其他查询逻辑 */}", sort = "{'dateUploaded': -1}", limit = "#?1" ) fun findLatestUploads(area: String, limit: Int): List<AudioFile>
value字段只保留匹配文档的查询条件,别加sort、limit这些选项sort直接传入排序规则的JSON字符串limit用SpEL表达式#?1绑定方法的第二个参数(参数索引从1开始计数)
方式二:使用聚合管道(适合复杂查询场景)
如果你的查询逻辑涉及多阶段处理,用聚合管道更灵活,把匹配、排序、限制写成管道数组:
@Query(""" [ { '$match': { 'area': ?0, /* 其他查询逻辑 */ } }, { '$sort': { 'dateUploaded': -1 } }, { '$limit': ?1 } ] """) fun findLatestUploads(area: String, limit: Int): List<AudioFile>
这种方式会把整个查询当作聚合操作执行,每个管道阶段依次处理,能满足更复杂的业务需求。
内容的提问来源于stack exchange,提问作者Jesser
相关产品推荐
相关产品推荐

