GridFS 存储文件

李招
2023-12-01

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

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 删除指定的文件

mongofiles 文档

 类似资料: