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集合中。

以下是简单的 fs.files 集合文档:

{

"filename": "test.txt",

"chunkSize": NumberInt(261120),

"uploadDate": ISODate("2014-04-13T11:32:33.557Z"),

"md5": "7b762939321e146569b07f72c62cca4f",

"length": NumberInt(646)

}

以下是简单的 fs.chunks 集合文档:

{

"files_id": ObjectId("534a75d19f54bfec8a2fe44b"),

"n": NumberInt(0),

"data": "Mongo Binary Data"

}

GridFS 添加文件

现在我们使用 GridFS 的 put 命令来存储 mp3 文件。

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

打开命令提示符,进入到MongoDB的安装目录的bin目录中,找到mongofiles.exe,并输入下面的代码:

>mongofiles.exe -d gridfs put song.mp3

-d gridfs 指定存储文件的数据库名称,如果不存在该数据库,MongoDB会自动创建。如果不存在该数据库,MongoDB会自动创建。Song.mp3 是音频文件名。

使用以下命令来查看数据库中文件的文档:

>db.fs.files.find()

以上命令执行后返回以下文档数据:

{

_id: ObjectId('534a811bf8b4aa4d33fdf94d'),

filename: "song.mp3",

chunkSize: 261120,

uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",

length: 10401959

}

我们可以看到 fs.chunks 集合中所有的区块,以下我们得到了文件的 _id 值,我们可以根据这个 _id 获取区块(chunk)的数据:

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

以上实例中,查询返回了 40 个文档的数据,意味着mp3文件被存储在40个区块中。

python gridfs_MongoDB GridFS相关推荐

  1. python gridfs_【已解决】用Python去连接本地mongoDB去用GridFS保存文件

    折腾: 期间,命令行方式的mongofiles去put get delete delete_id等,已经基本上搞清楚了. 接着就是去用Python代码,通过driver: 的方式,调用API,去保存数 ...

  2. mongodb存储二进制数据的二种方式——binary bson或gridfs

    python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...

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

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

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

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

  5. python gridfs_python – pymongo从GridFS中获取图像

    我正在玩MongoDB和pymongo API.我可以将一个图像文件放到GridFS中 – 看起来很简单: >>> f = open('myimage.jpg', 'r') > ...

  6. python gridfs_python 将图片存入mongodb,读取图片,gridfs模块

    导入图片 引入模块,其中gridfs模块不需要单独安装,引入了pymongo即可直接引入 from pymongo import MongoClient from gridfs import * im ...

  7. python gridfs_python利用mongodb上传图片数据 : GridFS 与 bson两种方式

    利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...

  8. java mongodb gridfs_MongoDB学习笔记之GridFS使用介绍

    GridFS简介 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS使用 MongoDB提供了一个命令行工具mongofiles可以来处理GridFS, 列出所有文件 ...

  9. python与mongo_MongoDB与Python的交互

    驱动模块 pymongo是python里常用的操作MongoDB的驱动模块 可用pip下载安装 pip install pymongo 创建连接 MongoClient是MongoDB的客户端代理对象 ...

最新文章

  1. 计算机专业可以用台式机吗,Win10X电脑操作系统可以装在台式机吗?
  2. 这是你从未见过的组件库 -- Android 上的手绘风格组件
  3. 美团Android自动化之旅—生成渠道包
  4. 马超计算机博士,湖南大学设计院马超民等博士生团队发明“手势”控制汽车
  5. Javascript数组操作
  6. c语言switch编写个人所得税,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  7. 190328每日一句 When you forgive, you release.
  8. iso中应用外部资源
  9. 如何制作Linux程序启动脚本
  10. php168找回管理员密码,如何找回WordPress后台管理员密码
  11. 实验七-卷积编码的MATLAB实现
  12. 搜集一些常见国家语言Unicode编码范围
  13. Vue事件修饰符.prevent .passive
  14. 芯片设计流程介绍(从硬件设计语言到芯片制造)
  15. USACO/ratios 3.2.4
  16. Process finished with exit code 134
  17. 双击.bat文件闪退
  18. BeautifulSoup中find和find_all的使用
  19. 共享软件走向海外之路
  20. 密码学归约证明——定长对称加密密钥的敌手不可区分性

热门文章

  1. android 仿qq换肤功能,Android插件化的思考——仿QQ一键换肤,思考比实现更重要!.doc...
  2. ET框架---PlayerComponent学习笔记
  3. const char *str,char const *str,char *const str的区别,及const详解
  4. 秦小明 金融班 课程笔记 第一部分2018.6.8 宏观和微观经济
  5. SwiftUI之猜国旗APP及色彩类控件
  6. Nginx_静态资源处理
  7. python词云图词频统计
  8. bcompare--使用/实例
  9. 阿里102班成立,班主任马云寄语:理想主义让我们走在一起
  10. 双重绝缘和加强绝缘的安全条件