2 回答
TA贡献1830条经验 获得超9个赞
GridFS 是一个不错的选择。你得到:
驱动程序自动创建索引,从而实现高效检索
如果您的图像超过 16 MB,则可以灵活处理
独立的元数据和内容存储
您也可以使用二进制类型并将图像数据直接存储在字段中。这会减少开销,但是:
您应该仍然单独存储内容的元数据,或者对该解决方案与内容内联在文档中的解决方案进行基准测试(因为当您只需要元数据时,跳过内容字节可能会很慢)
您需要自己处理元数据
TA贡献1820条经验 获得超9个赞
建议您将较小(小于16MB)的文件作为Buffer类型(即BSON二进制类型)的数据保存到MongoDB中。BSON 二进制类型用于存储任何类型的二进制数据。BSON 二进制类型对应于 RDBMS BLOB 类型,它是 MongoDB 提供的两种二进制对象存储(另一种是 GridFS)的基础。GridFS 是 MongoDB 中的一项规范,它可以通过将给定文件划分为多个块来在 MongoDB 中存储大型文件(例如视频、大型音频文件和图像),这反过来又使我们能够仅获取和加载文件的部分内容,如下所示必需的,而不是检索整个文件。
如果您需要存储的所有文件大小都小于 16 MB,建议您不要使用 GridFS。如果是这种情况,并且您仍然想利用 MongoDB,只需将文件直接存储在普通的 MongoDB 文档中即可。BSON 文档的最大大小为 16 MB,因此如果您的所有文件都较小,那么使用 GridFS 会浪费资源。
但出于教育目的,如果您对小于 16MB 的文件使用 GridFS 并没有什么问题,以上仅适用于生产级别的项目。
添加回答
举报