我有一系列小说,如下所示:
Words数组包含所有单词以及与每个单词相关的其他语言信息。当我尝试添加更长的文本(100k字+)时,我收到错误:
RangeError:尝试写入外部缓冲区边界
我收集到的,意味着BSON文件大于16 mb,因此超出限制。
我认为这是一种相对常见的情况。我现在正在考虑如何解决这个限制 - 例如,我可以把小说分成几个10k字的大块。或者这是否意味着文档应该组成一个单独的集合(即每个文本上传一个新集合) - 这对我来说是最不合理的。
在这种情况下,是否有设计MongoDB数据库的标准/建议方法?
另外,在JS / Node中插入文档之前是否可以检查BSON的大小?
答案 0 :(得分:0)
您是否绝对需要在MongoDB中存储书籍的内容?如果您只是将内容提供给用户或批量处理,我建议将它们存储在磁盘或AWS S3存储桶或类似产品中。
如果您需要图书内容存放在数据库中,请尝试使用MongoDB GridFS:
GridFS是用于存储和检索超过的文件的规范 BSON文件大小限制为16 MB。
GridFS不是将文件存储在单个文档中,而是将文件分成多个部分或块,并将每个块存储为单独的文档
当您在文件中查询GridFS时,驱动程序将根据需要重新组合块。您可以对通过GridFS存储的文件执行范围查询。您还可以从文件的任意部分访问信息,例如“跳过”到视频或音频文件的中间。
在这里阅读更多内容: https://docs.mongodb.com/manual/core/gridfs/