本文记录我在开发中使用 MongoDB 和 Mongoose 时遇到的问题。
文件大小限制
根据官方文档,MongoDB 中的每个文档都不应超过 16 MB。对于大多数非文件形式的数据,开发中不会触及到这个限制。但当文档大小超出限制时,就需要做一些处理。
最直观且简单的方案是将数据分割保存在不同的文档中。对于初始文档较小的数据来说,这是最简单的解决方案。
如上图所示,当向文档中插入新数据时,初次尝试默认可以成功。当收到错误码 17419 或 10334 时,服务器因最终文档会超过 16 MB 而拒绝请求。这时就必须创建新的文档来储存数据。
这个方案需要在应用层加入额外的处理逻辑,比如读取时融合多个文档的数据。但是插入数据时的 overhead 极小。