有人可以解释 MongoDB 中文档的大小限制吗?它说每个文档有 16MB 的限制,但这是什么意思?

Can somebody please explain the size limit of a document in MongoDB? It says there is a 16MB limit per document but what does it mean?

我有大约 3 个集合,每个集合都没有很多数据。他们每个人都有大约 50 objects/items,每个包含大约 200 个字符,但整个集合(一个集合)占用了约 270KB 的 space(很多)。我不明白为什么要这样做。

所以回到问题,这些集合每个都有 16mb 的限制还是整个数据库?请帮忙。谢谢。

这里有一些例子:

Object.bsonsize({ a: null }) => 8
Object.bsonsize({}) => 5
Object.bsonsize({ _id: ObjectId() }) => 22

Object.bsonsize({a: "fo"}) => 15
Object.bsonsize({a: "foo"}) => 16
Object.bsonsize({ab: "fo"}) => 16

5 字节似乎是最小的可能大小。

您可以使用此聚合管道检索文档的 BSON 大小:

db.collection.aggregate([{ $project: { size: { $bsonSize: "$$ROOT" } } }])

一个文档的最大大小是 16 MiByte,这是一个硬编码限制。每个文档都有 _id 字段,通常带有一个 ObjectId 值,因此文档的最小大小为 22 字节。

根据MongoDB: The Definitive Guide War 和 Peace 的整个文本只有 3.14MB,所以 16MiB 已经很多了。