MongoDB文档大小限制

时间:2017-10-14 20:57:29

标签: javascript node.js database mongodb database-design

我有一系列小说,如下所示:

enter image description here

Words数组包含所有单词以及与每个单词相关的其他语言信息。当我尝试添加更长的文本(100k字+)时,我收到错误:

RangeError:尝试写入外部缓冲区边界

我收集到的,意味着BSON文件大于16 mb,因此超出限制。

我认为这是一种相对常见的情况。我现在正在考虑如何解决这个限制 - 例如,我可以把小说分成几个10k字的大块。或者这是否意味着文档应该组成一个单独的集合(即每个文本上传一个新集合) - 这对我来说是最不合理的。

在这种情况下,是否有设计MongoDB数据库的标准/建议方法?

另外,在JS / Node中插入文档之前是否可以检查BSON的大小?

1 个答案:

答案 0 :(得分:0)

您是否绝对需要在MongoDB中存储书籍的内容?如果您只是将内容提供给用户或批量处理,我建议将它们存储在磁盘或AWS S3存储桶或类似产品中。

如果您需要图书内容存放在数据库中,请尝试使用MongoDB GridFS:

  

GridFS是用于存储和检索超过的文件的规范   BSON文件大小限制为16 MB。

     

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

     

当您在文件中查询GridFS时,驱动程序将根据需要重新组合块。您可以对通过GridFS存储的文件执行范围查询。您还可以从文件的任意部分访问信息,例如“跳过”到视频或音频文件的中间。

在这里阅读更多内容: https://docs.mongodb.com/manual/core/gridfs/