MongoDB GridFS

GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。

GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。

GridFS 可以更好的存储大于16M的文件。

GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。

GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。

每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。

使用

调用 MongoDB 安装目录下bin的 mongofiles.exe工具

具体操作

  1. 存储文件:mongofiles –d database put filename

  2. 获取文件:mongofiles –d database -l new_filename get filename

  3. 删除文件:mongofiles –d database delete filename

  4. 存储文件:mongofiles –d database -l filename put new_filename
    以这种命令上传文件,文件名为new_filename,不会携带路径

  5. 查看文件列表:mongofiles -d database list

  6. 查找文件: mongofiles -d database search test.txt

pymongo操作

from pymongo import MongoClient
from gridfs import GridFSclient = MongoClient()
database = client.get_database('files')
gf = GridFS(database=database)res = gf.find_one()
print(res)
{'_GridOut__buffer': b'','_GridOut__chunk_iter': None,'_GridOut__chunks': Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'files'), 'fs.chunks'),'_GridOut__file_id': None,'_GridOut__files': Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'files'), 'fs.files'),'_GridOut__position': 0,'_file': {'_id': ObjectId('6236e52955dd69298cc54a16'),'chunkSize': 261120,'filename': 'test.txt','length': 18,'md5': '7552e7c2987420e42fa1b19a0988c7a1','uploadDate': datetime.datetime(2022, 3, 20, 8, 26, 17, 943000)},'_session': None}# 打印文件列表['filename1','filename2',...]
print(gf.list())# 下载文件
with open('./gettest.txt','wb') as f:for line in gf.get(res._id):f.write(line)# 上传文件
with open('./gettest.txt','rb') as f:gf.put(f.read(),filename='gettest.txt')

MongoDB——GridFS相关推荐

  1. MongoDB GridFS——本质上是将一个文件分割为大小为256KB的chunks 每个chunk里会放md5标识 取文件的时候会将这些chunks合并为一个整体返回...

    MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等). GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中 ...

  2. MongoDB GridFS 存储文件

    使用MongoDB的GridFS方式. CSDN: https://blog.csdn.net/qq_32657967/article/details/81534259 官方文档: https://d ...

  3. 一文说通Dotnet操作MongoDB GridFS

    补个技术债.   这个主题一直在列表中,今天把它补上.还有一个原因,就是网上能查到的代码,大多已经过期了.今天写的,是按最新的SDK做的例子.   一.MongoDB GridFS 先说说 GridF ...

  4. 从MongoDB GridFS流式传输文件

    不久前,我在Twitter上发布了自己的最新作品,即从MongoDB GridFS传输文件进行下载(而不是将整个文件存储到内存中然后提供服务),这是我取得的一个小胜利. 我答应就此事写博客,但不幸的是 ...

  5. PHP操作MongoDB GridFS 存储文件

    PHP操作MongoDB GridFS 存储文件,如图片文件 我的测试代码: 1.前端上传文件html index.html <!DOCTYPE html PUBLIC "-//W3C ...

  6. Python 分布式文件系统 Mongodb GridFS

    Python 分布式文件系统 Mongodb GridFS~~~~ 抽时间关注下~~~ 转载于:https://www.cnblogs.com/macula7/archive/2010/03/31/1 ...

  7. SpringBoot+MongoDB GridFS文件上传、下载、预览实战

    SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...

  8. Python+Streamlit aggrid+MongoDB GridFS构建低代码文档管理应用(文档查询下载实用篇)

    1. Sreamlit aggrid简介 Sreamlit aggrid是Streamlit的Ag-Grid组件的实现,在Python Streamlit框架下,更加灵活的使用表格,包括分组.排序.编 ...

  9. mongodb gridfs java_mongodb gridfs基本使用

    Mongodb GridFS图片文件存储解决方案 之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径. 目前需 ...

最新文章

  1. JS+库+框架+工具
  2. GPT-2:OpenAI的NLP商业化野望
  3. Start Activity for Result(Bug)
  4. php和python区别-编程语言之PHP与Python之间的差异
  5. jquery书写一个简易的二级联动
  6. mysql slave 能写吗_MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
  7. hadoop multipleoutputs
  8. Python基础教程:type()函数-动态创建类
  9. 软件工程课程学生信息
  10. oracle 查询创建的全文索引,CSS_oracle全文搜索创建与使用示例,说明:使用全文索引需要使用 - phpStudy...
  11. dot pairs 点_Dott入局欧洲共享单车市场 明年3月伦敦巴黎推出
  12. 大学生拍照搜题_大学生心理健康教育知识,请问:这个考试有没有找答案软件?...
  13. Linux编程练习 --进程间通信2--两个管道实现双向通信
  14. 数据库_初学语句 in的用法
  15. Canvas--圆弧和圆
  16. php oop基础,php面向对象编程(oop)基础
  17. 关于电脑周边配件的问题
  18. php sql update 字段a=字段b的信息_企业级PHP求职最全精品面试100问(附答案)
  19. c语言分治算法之归并排序,分治算法之归并排序
  20. PHP 7 的五大新特性

热门文章

  1. 什么是幂等?如何实现
  2. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 5726797824, 0) failed;
  3. V4L2 驱动层分析
  4. 爆米豆分页插件使用及mysql的find_in_set函数使用
  5. 80后十大烦恼的特征
  6. 【obs】libobs-winrt :CreateDispatcherQueueController
  7. 默默学Sharding-Sphere(二)
  8. (2020年最新版)App Store 审核指南
  9. 2个月,3000节音频,利润30万+这就是赚钱的秘密
  10. stat() /root/xxx/index.html failed (13: Permission denied)