在 MongoDB 中,单个文档的最大大小为 16 MB。超过此限制会导致插入或更新失败,因此在处理嵌套文档、大数组或 Base64 文件时要特别小心。下面是几种常见、实用的查看文档大小的方法。
Object.bsonsize() 查看文档大小(推荐)MongoDB shell 或 mongosh 提供了一个内置函数:
Object.bsonsize(document)
它会返回该文档的 BSON 编码后大小(单位:字节)。
示例:
// 在 mongosh 中执行
let doc = db.users.findOne({ _id: ObjectId("672cbd127b4e9e1c7f85d8f1") });
Object.bsonsize(doc);
输出示例:
2456
表示这个文档占用约 2.4 KB。
如果想批量检测集合中文档的大小,可以使用 $bsonSize 聚合操作符:
db.users.aggregate([
{
$project: {
size: { $bsonSize: "$$ROOT" }
}
},
{ $sort: { size: -1 } },
{ $limit: 5 } // 查看最大的 5 个文档
])
结果示例:
[
{ "_id": ObjectId("..."), "size": 15893423 },
{ "_id": ObjectId("..."), "size": 103248 },
...
]
这样你可以轻松找到接近 16 MB 限制的“危险”文档。