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

通过Java/Spring Data编程设置Capped collection大小限制遇int超限如何解决

问题根因

Java 语言中int为32位有符号整数,取值范围为-2147483648 ~ 2147483647,你要设置的2GB对应字节数2147483648刚好超出int类型的最大值,因此触发数值溢出错误。
你之前传值报错的核心原因是:直接书写的整数常量默认会被Java识别为int类型,还没传入BasicDBObject就已经在编译/运行阶段触发了溢出,而非BasicDBObject不支持long类型参数。

解决方案

直接将数值显式声明为long类型即可,只需在数值末尾添加L后缀标识该值为long类型:

Map<String, Object> commandArguments = new BasicDBObject();
commandArguments.put(CONVERT_TO_CAPPED, COLLECTION_NAME);
// 数值后加L显式声明为long类型,规避int溢出
commandArguments.put(SIZE, 2147483648L);
BasicDBObject command = new BasicDBObject(commandArguments);
Document commandResult = database.runCommand(command);
补充说明
  • MongoDB对Capped集合的大小上限要求为:64位系统下最大支持8PB,完全满足2GB的设置需求
  • 不要使用String或BigInteger类型传值,MongoDB的convertToCapped命令要求size参数必须为数值类型,传非数值类型会触发命令执行错误

内容的提问来源于stack exchange,提问作者Sathish David Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:03