【问题标题】:MongoDB: How can I store files (Word, Excel, etc.)?MongoDB:如何存储文件(Word、Excel 等)?
【发布时间】:2016-03-14 19:17:55
【问题描述】:

我还没有认真考虑将 Word、Excel 等文件存储到 MongoDB 中,我想知道 - 我能否将整个 docx 或 excel 文件存储在 MongoDB 中,然后通过查询检索它们?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    使用 gridfs 是的。

    Gridfs 是一种存储规范。它不是内置在数据库中,而是内置在驱动程序中。

    您可以在此处了解更多信息:http://www.mongodb.org/display/DOCS/GridFS

    通常的实现是将您的大文档分解为较小的文档,并将这些 aprts 存储在一个由您查询文件的 fs.files 集合掌握的块集合中。

    【讨论】:

    • 如果您的二进制文件符合 BSON 大小限制(当前为 16MB),您还应该考虑将二进制对象直接存储在单个文档中。在When to use GridFS 上有一个 wiki 页面,上面有一些建议。
    • 确实,这是完全正确的,因为它会导致不必要的查询和空间分配。
    【解决方案2】:

    MongoDB 是一个文档数据库,用于存储类似 JSON 的文档(称为 BSON)。 BSON 对象的最大大小为16 megabytes,对于某些用例来说可能太小了。

    如果要存储任意大小的二进制数据,可以使用 GridFS (http://www.mongodb.org/display/DOCS/GridFS+Specification)。 GridFS 会自动将您的文档(或任何二进制数据)拆分为多个 BSON 对象 (usually 256k in size),因此您只需担心存储和检索完整的文档(无论其大小)。

    据我所知,Mongoose 不支持 GridFS。但是,您可以通过its native driver's GridStore 使用 GridFS。只需运行npm install mongodb 并开始破解!

    【讨论】:

    • 我知道——这就是为什么我说标题中有玩笑——我想我应该避开那个玩笑。 MongoDB 是否有能力将 Word 或 Excel “分解”为 BSON 并在查询时重新组合?
    • MongoDB 不是 JSON,BSON 不是 JSON
    • Msx 文档大小(如果实际为 16Mb)
    • 感谢 cmets。固定。
    • 同样由于内存分配,文件块的默认实现大小也是 256k 而不是 16mb
    猜你喜欢
    • 2012-10-12
    • 2011-06-26
    • 2012-02-16
    • 2015-02-16
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多