MongoDB——GridFS
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工具
具体操作
存储文件:
mongofiles –d database put filename
获取文件:
mongofiles –d database -l new_filename get filename
删除文件:
mongofiles –d database delete filename
存储文件:
mongofiles –d database -l filename put new_filename
以这种命令上传文件,文件名为new_filename,不会携带路径查看文件列表:
mongofiles -d database list
查找文件:
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相关推荐
- MongoDB GridFS——本质上是将一个文件分割为大小为256KB的chunks 每个chunk里会放md5标识 取文件的时候会将这些chunks合并为一个整体返回...
MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等). GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中 ...
- MongoDB GridFS 存储文件
使用MongoDB的GridFS方式. CSDN: https://blog.csdn.net/qq_32657967/article/details/81534259 官方文档: https://d ...
- 一文说通Dotnet操作MongoDB GridFS
补个技术债. 这个主题一直在列表中,今天把它补上.还有一个原因,就是网上能查到的代码,大多已经过期了.今天写的,是按最新的SDK做的例子. 一.MongoDB GridFS 先说说 GridF ...
- 从MongoDB GridFS流式传输文件
不久前,我在Twitter上发布了自己的最新作品,即从MongoDB GridFS传输文件进行下载(而不是将整个文件存储到内存中然后提供服务),这是我取得的一个小胜利. 我答应就此事写博客,但不幸的是 ...
- PHP操作MongoDB GridFS 存储文件
PHP操作MongoDB GridFS 存储文件,如图片文件 我的测试代码: 1.前端上传文件html index.html <!DOCTYPE html PUBLIC "-//W3C ...
- Python 分布式文件系统 Mongodb GridFS
Python 分布式文件系统 Mongodb GridFS~~~~ 抽时间关注下~~~ 转载于:https://www.cnblogs.com/macula7/archive/2010/03/31/1 ...
- SpringBoot+MongoDB GridFS文件上传、下载、预览实战
SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...
- Python+Streamlit aggrid+MongoDB GridFS构建低代码文档管理应用(文档查询下载实用篇)
1. Sreamlit aggrid简介 Sreamlit aggrid是Streamlit的Ag-Grid组件的实现,在Python Streamlit框架下,更加灵活的使用表格,包括分组.排序.编 ...
- mongodb gridfs java_mongodb gridfs基本使用
Mongodb GridFS图片文件存储解决方案 之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径. 目前需 ...
最新文章
- JS+库+框架+工具
- GPT-2:OpenAI的NLP商业化野望
- Start Activity for Result(Bug)
- php和python区别-编程语言之PHP与Python之间的差异
- jquery书写一个简易的二级联动
- mysql slave 能写吗_MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- hadoop multipleoutputs
- Python基础教程:type()函数-动态创建类
- 软件工程课程学生信息
- oracle 查询创建的全文索引,CSS_oracle全文搜索创建与使用示例,说明:使用全文索引需要使用 - phpStudy...
- dot pairs 点_Dott入局欧洲共享单车市场 明年3月伦敦巴黎推出
- 大学生拍照搜题_大学生心理健康教育知识,请问:这个考试有没有找答案软件?...
- Linux编程练习 --进程间通信2--两个管道实现双向通信
- 数据库_初学语句 in的用法
- Canvas--圆弧和圆
- php oop基础,php面向对象编程(oop)基础
- 关于电脑周边配件的问题
- php sql update 字段a=字段b的信息_企业级PHP求职最全精品面试100问(附答案)
- c语言分治算法之归并排序,分治算法之归并排序
- PHP 7 的五大新特性
热门文章
- 什么是幂等?如何实现
- OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 5726797824, 0) failed;
- V4L2 驱动层分析
- 爆米豆分页插件使用及mysql的find_in_set函数使用
- 80后十大烦恼的特征
- 【obs】libobs-winrt :CreateDispatcherQueueController
- 默默学Sharding-Sphere(二)
- (2020年最新版)App Store 审核指南
- 2个月,3000节音频,利润30万+这就是赚钱的秘密
- stat() /root/xxx/index.html failed (13: Permission denied)