MongoDB的学习笔记(四)--MongoDB中的GridFS
2017-10-23 08:33
267 查看
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
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
相关文章推荐
- 【MongoDB学习笔记29】MongoDB的GridFS存储深入
- MongoDB学习笔记之GridFS使用介绍
- 【MongoDB学习笔记28】MongoDB的GridFS存储机制
- MongoDB 学习笔记(五):固定集合、GridFS文件系统与服务器端脚本
- mongodb 学习笔记四 GridFS Example
- MongoDB 学习笔记(五):固定集合、GridFS文件系统与服务器端脚本
- [Spring Data MongoDB]学习笔记--MapReduce
- MongoDB学习笔记
- [MongoDB学习笔记-01] 入门
- 【MongoDB学习笔记2】MongoDB基本知识
- 【MongoDB学习笔记5】MongoDB中的创建、读取、更新、删除(CRUD)
- MongoDB学习笔记
- MongoDB入门学习笔记之简介与安装配置
- [MongoDB学习笔记-02] Node.js连接MongoDB的两种方法
- MongoDB学习笔记之Mongoose的使用
- MongoDB 学习笔记
- MongoDB学习笔记~复杂条件拼接和正则的使用
- mongo db 学习笔记 之二: mongodb 用户认证
- flask + MongoDB 学习笔记(2):增改删查数据库
- MongoDB 学习笔记 之 QueryDocument 查询