有人可以解释一下 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 的限制,但这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

mongodb怎么插入多个文档

mongodb 怎么限制文档数量

mongodb官方文档中没有专门讲锁机制的章节吗

MongoDB对象大小插入问题C#

mongodb官方文档中没有专门讲锁机制的章节吗

我的 ios 应用程序的大小限制,尤其是核心数据