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

如何使用Java的MongoOperations计算MongoDB集合的数据大小

Spring Data MongoDB 中查询集合数据大小的解决方案

问题根源

MongoOperations的executeCommand方法接收的是MongoDB原生数据库命令文档,不是Mongo Shell的JS执行语句,你之前直接传入Shell脚本字符串不会被服务端解析执行,因此无返回也不报错。

推荐解决方案(兼容所有支持的MongoDB版本)

使用MongoDB原生collStats统计命令,返回结果中的size字段和db.collection.dataSize()的返回值完全一致:

// 替换为实际集合名称
String collectionName = "myCollection";
// 构造统计命令
Document statsCommand = new Document("collStats", collectionName);
// 执行命令获取结果
Document commandResult = myMongoOpObject.executeCommand(statsCommand);
// 提取数据大小,单位为字节
long dataSize = commandResult.getLong("size");

// 附加常用统计字段说明:
// storageSize:集合在磁盘上占用的存储空间,包含预留空闲块,开启压缩时会小于size
// totalSize:集合+索引总占用磁盘大小(MongoDB 4.4及以上版本支持)
// count:集合中文档总数

不推荐兼容方案(仅适配MongoDB 4.2以下版本)

如果必须调用Shell JS方法,可使用已废弃的eval命令,注意生产环境通常会禁用JavaScript执行权限,该方案不建议上线使用:

String collectionName = "myCollection";
Document evalCommand = new Document("eval", String.format("db.getCollection('%s').dataSize()", collectionName));
Document result = myMongoOpObject.executeCommand(evalCommand);
long dataSize = result.getLong("retval");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:01