MongoDB的学习笔记(四)--MongoDB中的GridFS

GridFS是一种将大型文件存储在MongoDB的文件规范:
MongoDB数据库以支持BSON格式保存二进制对象,但是MongoDB中的BSON对象最大不能超过4MB。
GridFs规范提供了一种透明的机制,可以将一个大文件分割成多个较小的文档。为实现这点,该规范指定了一个将文件分块的标准。每个文件都将在文件集合对象中保存一个元数据对象,一个或多个块对象可被组合保存在一个块集合中。
GridFS文件存储原理:
驱动首先会在当前数据库创建两个集合:fs.files和fs.chunks,前者记录了文件名,文件创建时间,文件类型等基本信息;后者分块存储了文件的二进制数据(并支持加密这些二进制数据),分块的意思是把文件按照指定大小分割,然后存入多个文档中,“fs.files”怎么知道它对应的文件在哪?
在“fs.chunks”中有个”files_id”键对应“fs.files”的“_id”,“fs.chunks”还有一个键(int型)“n”,它表明这些块的先后顺序,这两个集合中的“fs”也是可以通过参数自定义的。

一个fs.files集合中的一条记录内容如下,即一个file的信息如下:
这里写图片描述
对应的fs.chunks中的chunk如下:
这里写图片描述
默认chunk的大小是256K:
写入:
如果文件大于chunksize,则把文件分割成多个chunk,再把这些chunk保存到fs.chunks中,最后再把文件信息存入到fs.files中。
读取:
先据查询的条件,在fs.files中找到一个合适的记录,得到“_id”的值,再据这个值到fs.chunks中查找所有“files_id”为“_id”的chunk,并按“n”排序,最后依次读取chunk中“data”对象的内容,还原成原来的文件。

Mongo自带一个实现mongofiles,基本操作如下:
1. 列出所有文件:
这里写图片描述
2. 上传一个文件:
这里写图片描述
3. 下载一个文件:
这里写图片描述
4. 查找文件:
这里写图片描述
参数说明:
-d 指定数据库,默认是fs
-u-p 用户名,密码
-h 指定主机
-port 指定主机端口
-c 指定集合,默认是fs
-t 指定文件的MIME类型,默认会忽略
-l 指定路径

MongoDB文件存取操作:
http://www.cnblogs.com/lipan/archive/2011/03/21/1989409.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值