GridFS 是Mongo 的一种存储机制,用来存储大型二进制文件。
1. GridFS是用于存储和检索超过16MB的BSON文档大小限制的文件的解决方案。
2.GridFS是MongoDB用来存储大型二进制文件的一种存储机制。
3.GridFS 不是将文件存储在单个文档中,而是将文件分为块,并将每个块作为单独的文档存储,默认情况下,GridFS使用的块大小为256kb。
4. GridFS 使用两个集合存储文件,一个集合文件的块(fs.files),另一个存储文件的原始数据(fs.chunks)。优点
1:能够简化技术栈,如果已经使用了MongoDB,那么使用GridFS,就不需要其它独
立的存储工具了
2:GridFS会自动平衡已有的复制,或者为MongoDB设置的自动分片,所以对文件存
储做故障转移或者是横向扩展会更容易 。
3:GridFS的功能不错,能自动解决一些其他文件系统遇到的问题,如在同一个目录
下存储大量的文件缺点
1: 性能较低,不如直接访问文件系统快。
2:无法修改文档。如果要修改GridFS里面的文档,只能是先删除再添加
mongofiles –help 可以查看 帮助
storage options 如下:
storage options:
-d, --db=<database-name> database to use (default is 'test') (default: test)
-l, --local=<filename> local filename for put|get
-t, --type= content/MIME type for put (optional)
-r, --replace remove other files with same name after put
--prefix=<prefix> GridFS prefix to use (default is 'fs') (default: fs)
--writeConcern=<write-concern> write concern options e.g. --writeConcern majority,
--writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'
(defaults to 'majority') (default: majority)
常用命令:
命令 | 描述 | 备注 |
---|---|---|
list | 列出GridFS存储的文件 或以 xxx 开头的文件 | 返回匹配文件; 未加参数返回全部 |
search | 搜索 包含 xxx 字符文件名的文件 | |
put | 保存文件 | mongofiles -l ./xxx.xx put xxx.xx (需要指定存入名) |
get | 通过文件名下载文件 | mongofiles -l ./xxx.xx get xxx.xx |
get_id | 通过 _id下载文件 | |
delete | 通过文件名 删除指定的文件 | |
delete_id | 通过 _id 删除指定的文件 |