You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data MongoRepository的Between查询对Int值是否包含边界?

Spring Data MongoDB 中 IsBetween 查询的边界规则

先直接给你明确结论:你写的countAllByScoreIsBetween(min: Int, max: Int)方法是同时包含上下边界的。也就是说当你调用countAllByScoreIsBetween(3,6)时,会统计分数等于3、4、5、6的所有记录,最终结果是4。

背后的逻辑

Spring Data MongoDB对Between关键字的映射规则很清晰:它会把这个方法转换成MongoDB的$gte(大于等于最小值)和$lte(小于等于最大值)组合查询。对应到你的场景,生成的MongoDB原生查询大概是这样的:

{ "score": { "$gte": 3, "$lte": 6 } }

这个查询会匹配所有score字段值落在3到6之间(包括3和6)的文档。

结合你的代码场景验证

假设你的MongoDB里存了这些Score文档:

  • score: 3
  • score: 4
  • score: 5
  • score: 6
  • score: 2
  • score: 7

调用countAllByScoreIsBetween(3,6)会返回4,正好对应3、4、5、6这四条符合条件的记录。

如果需要非包含边界的查询

要是你需要排除某一边的边界,可以用更明确的关键字组合来定义方法:

  • 包含最小值、排除最大值:countAllByScoreIsGreaterThanEqualAndScoreIsLessThan(min: Int, max: Int)
  • 排除最小值、包含最大值:countAllByScoreIsGreaterThanAndScoreIsLessThanEqual(min: Int, max: Int)

内容的提问来源于stack exchange,提问作者orirab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:14:57