在 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 限制的“危险”文档。


三、在代码中检查(Java 驱动示例)