【发布时间】:2023-03-28 23:13:01
【问题描述】:
来自 MongoDB 权威指南:
大于 4MB 的文档(转换为 BSON 时)不能 保存到数据库中。这是一个有点武断的限制(并且可能是 未来提出);主要是为了防止糟糕的架构设计并确保 一致的表现。
我不明白这个限制,这是否意味着包含大量 cmets 且恰好大于 4MB 的博客文章的文档不能存储为单个文档?
这也算嵌套文档吗?
如果我想要一个审核值更改的文档怎么办。 (它最终可能会增长,超过 4MB 的限制。)
希望有人正确解释这一点。
我刚刚开始阅读有关 MongoDB(我正在学习的第一个 nosql 数据库)的信息。
谢谢。
【问题讨论】:
-
我认为问题应该澄清,这是 MongoDB 存储文档大小的限制,而不是 BSON 格式的限制。
-
不过,我只是尝试保存一个肯定超过 4MB 的巨大文档,以获取消息“BSON::InvalidDocument:文档太大:BSON 文档限制为 4194304 字节。”如果是这种情况,在警告/错误消息中是不是有点误导?
-
您可以在
mongoshell 中使用db.isMaster().maxBsonObjectSize/(1024*1024)+' MB'命令轻松找到您的最大 BSON 文档大小。 -
无模式 nosql 的目的是什么,您不能转储超过 16 mb 的记录并在其上构建 crud 操作!
-
我认为最初的报价说明了一切......限制是为了防止糟糕的架构设计。例如,如果您有一个包含许多 cmets 的帖子,您会想要一个博客条目集合和一个评论集合,或者一个更改集合。 mongo/nosql 的设计允许将大型事物作为文档网络,但开发人员需要将它们分解成有意义的部分。如果没有设置大小限制,就会出现其他问题。我认为 4mb 的限制很好。 16mb,太棒了!但是,如果我正在编写一个 16mb 的文档,那就是设计存在其他问题的线索。