如何在MongoDB中存储文件?

时间:2012-01-23 12:56:43

标签: php mongodb

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

感谢并感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

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

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

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

    所以,如果你决定在mongodb中存储文件,最好使用通用的社区方法测试 - gridfs。

答案 1 :(得分:1)

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