我想知道哪个更好/更快:
答案 0 :(得分:20)
如果图像很小,您可以将它们作为二进制数据存储在集合中的文档中。只要考虑每次查询文档时都要检索它们(除非从查询中排除'图像'字段)。
但是,如果您的图像较大,我会使用GridFS。 GridFS具有一些功能,可以很好地处理您应该考虑的图像:
就性能而言,针对常规文档的读/写应该与针对GridFS进行读/写操作没有什么不同。我不认为性能是选择其中任何一个的区别。
我个人的建议是使用GridFS,但您需要分析您的特定用例。
希望这有帮助。
答案 1 :(得分:3)
我使用GridFS来存储照片和文档。它非常简单,从集合中检索它以便在本地显示或保存很容易。您可以将元数据与二进制数据一起存储在同一集合中。这样您就不需要创建其他集合来存储它们。
例如,在我的某个项目中,我会存储用户个人资料照片以及用户名,文件类型和上传日期。
答案 2 :(得分:2)
我写了一篇博客文章,介绍了在MongoDB中存储二进制数据和使用GridFS的权衡。请参阅:https://alexmarquardt.com/2017/03/02/trade-offs-to-consider-when-storing-binary-data-in-mongodb/
免责声明:我是MongoDB的员工。
答案 3 :(得分:1)
开发GridFS以有效地处理文件。 http://www.mongodb.org/display/DOCS/When+to+use+GridFS
不要忘记您可能需要翻译数据 到文件然后回来。
但可以肯定的是,进行一项考虑到您的使用模式的性能测试。