有人可以解释一下 MongoDB 中文档的大小限制吗?它说每个文档有 16MB 的限制,但这是啥意思?
Posted
技术标签:
【中文标题】有人可以解释一下 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?有人可以解释一下 MongoDB 中文档的大小限制吗?它说每个文档有 16MB 的限制,但这是什么意思? 【发布时间】:2021-07-11 02:31:46 【问题描述】:我有大约 3 个集合,每个集合都没有很多数据。它们每个都有大约 50 个对象/项目,每个对象/项目包含大约 200 个字符,但整个集合(一个集合)占用了大约 270KB 的空间(很多)。我不明白为什么会这样。
回到这个问题,这些集合是每个都有 16mb 的限制,还是整个数据库?请帮忙。谢谢。
【问题讨论】:
16mb 是一个对象的最大大小 就像集合中的单个对象?例如用户的传记? @ashenmadusanka 见MongoDB Document Limitations 是的。它位于 MongoDB 限制页面docs.mongodb.com/manual/reference/limits 【参考方案1】:这里有一些例子:
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的说法,《战争与和平》的全文只有3.14MB,所以16MiB已经不少了。
【讨论】:
以上是关于有人可以解释一下 MongoDB 中文档的大小限制吗?它说每个文档有 16MB 的限制,但这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章