来自MongoDB的权威指南:

大于4MB的文档(转换为BSON时)不能被删除

我不理解这个限制,这是否意味着一个包含大量 comments 的博客帖子的文档,恰好大于4MB,不能作为单个文档存储?

这也算嵌套文档吗?

如果我想要一个审核某个值的更改的文档呢.(它最终可能会增长,超过4MB的限制.)

希望有人能正确解释.

我刚刚开始阅读MongoDB(我正在学习的第一个nosql数据库).

非常感谢.

推荐答案

首先,在下一个版本中,这实际上是提高到8MB16MB...但我认为,从这个Angular 来看,10gen的艾略特(开发MongoDB的人)说得最好:

EDIT: The size has been 100 'raised' to 101

所以,在你的博客示例中,4MB是

如果你的博客文章有那么长

对于Trackback,如果您专用1MB

所以除了真的很奇怪

-艾略特

我想你很难达到极限...随着时间的推移,如果你升级...你将不得不越来越少地担心.

The main point of the limit is so you don't use up all the RAM on your server (as you need to load all 100s of the document into RAM when you query it.)

所以限制是普通系统上正常可用RAM的百分之几...它将逐年增长.

Note on Storing Files in MongoDB

如果您需要存储大于16MB的文档(或文件),可以使用GridFS API,它会自动将数据分割成多个段,并将它们流回到您的手中(从而避免大小限制/RAM的问题)

GridFS没有将文件存储在单个文档中,而是将文件分成多个部分或区块,并将每个区块存储为单独的文档.

GridFS使用两个集合来存储文件.一个集合存储文件块,另一个存储文件元数据.

您可以使用这种方法在数据库中存储图像、文件、视频等,就像在SQL数据库中一样.我甚至用它来存储数十亿字节的视频文件.

Mongodb相关问答推荐

在MongoDB中使用explain()和查询时缺少winningPlan''''

我可以在BSON中使用代理字段吗?

在MongoDB集合中按文档内的频率对数组排序

Next js、MongoDB和Prisma.包括不为相关字段工作

Golang:如何判断 collection.Find 是否没有找到任何文件?

如何将交易列表变成 token 数量的对象?

MongoDB 将 JSON 字符串转换为数组[{obj1},{obj2}]的实际对象

mongoDB 过滤、排序和排名结果

无法让 Mongoose.js 子文档数组填充

声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

使用 MongoDb 处理迁移

$elemMatch 的 MongoDB 索引

单个模式数组中的多个模式引用 - mongoose

MongoDB count() 未定义

MongoDB:查询和检索嵌入式数组中的对象?

Mongodb错误:The positional operator did not find the match needed from the query

MongoDB 用 $type 匹配一个数组?

spring 数据MongoDB.生成id的错误

Mongoose 为所有嵌套对象添加 _id

MongoDB Compass 中 JSON 输入意外结束