【问题标题】:How to store files in MongoDB?如何在 MongoDB 中存储文件?
【发布时间】:2012-02-16 19:44:30
【问题描述】:

有人告诉我 MongoDB 使用 GridFS 文件系统来存储文件。但是,有没有办法通过序列化或base64编码将文件本身存储在数据库BSON结构中?

感谢并感谢任何帮助。

【问题讨论】:

  • 序列化文件?这是什么意思?

标签: php mongodb


【解决方案1】:

GridFS 是普通 mongo 集合之上的一个薄层,因此文件内容('它们自己')正在存储为 BSON。 GridFS(最终是 BSON)以二进制形式存储文件,您想获取二进制内容,对它们进行 base64 编码,然后以二进制形式存储?为什么要这么做?

【讨论】:

    【解决方案2】:

    当然,您可以将文件序列化为字符串并将其存储在文档字段中。但是在这种方法中存在一个缺点 - 您的所有文件都应该 size limit)。

    Mongodb gridfs 建立在 mongodb 集合之上,包含两个集合:

    1. 文件 -- 文件的元数据(名称、大小、ID、您要保存的任何其他信息)
    2. Chunks -- 包含序列化文件主体的集合。如果文件大小超过 16 mb 限制,mongodb 会自动创建额外的块。因此,任何文件都将作为一个文件文档和 >=1 个块文档保存在 mongodb 中。

    你可以查看here文件在mongodb中的样子。

    因此,如果您决定将文件存储在 mongodb 中,最好使用经过社区方法测试的 common - gridfs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2014-05-20
      • 1970-01-01
      • 2018-01-01
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多