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: 3score: 4score: 5score: 6score: 2score: 7
调用countAllByScoreIsBetween(3,6)会返回4,正好对应3、4、5、6这四条符合条件的记录。
如果需要非包含边界的查询
要是你需要排除某一边的边界,可以用更明确的关键字组合来定义方法:
- 包含最小值、排除最大值:
countAllByScoreIsGreaterThanEqualAndScoreIsLessThan(min: Int, max: Int) - 排除最小值、包含最大值:
countAllByScoreIsGreaterThanAndScoreIsLessThanEqual(min: Int, max: Int)
内容的提问来源于stack exchange,提问作者orirab
相关产品推荐
相关产品推荐

