6. MongoDB GridFS
昨天浪费了一天的时间做了一个GridFS的Helper,说明自己对很多概念掌握不牢固,模糊不清晰;增加了自己的试错成本;
GridFS的好处
- 用于存储和恢复超过16M(Bjson文件限制)的文件(如:图片,音频,视频)
- 也是文件存储的一种方式,文件你存储在电脑里面也可以,存储在电脑里面给一个路径就可以了,为什么要用文件服务器;--> 参考上一篇文章中的内容《文件服务器》再写一遍;
文件你存储在电脑里面也可以,存储在电脑里面给一个路径就可以了,为什么要用文件服务器;
- 对文件的操作有记录 比如增删改查,可以花式查询并对结果做操作,之前需要用比较复杂的正则才可以
做到,比如按照日期查询,尤其是数量高到几万的时候,Window自带的文件管理存在不足;
查询出一批数据到别的地方,或者对其进行不同比例的压缩,前端有需要的去选择图片;各种维度去处理;
- 可以利用索引,比如GridFS建立表的时候会自动对Filename和ID做索引;
- 对文件的操作有了一个可以分的比较详细的权限管控,可以任意的与别的权限系统管理
- 可以对文件进行拆分,比如我只让你看到一部分这种;
- GridFS 可以更好的存储大于16M的文件;
- GridFS 会将大文件分割成多个小的chunk,一般为256k/个,每个chunk讲作为MongDB的一个文档(doucument)被存储在chunks集合中;
GridFS的介绍
GridFS 用两个集合来存储一个文件:fs.files 与 fs.chunks
chunk的中文意思是大块,fs 是默认的存储筐,可以创建自己的存储筐;
每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta 数据被存储在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 命令式添加文件
- 使用put命令添加一个mp3 文件
EveryThing 搜索mongofiles.exe,路径上面cmd打开当前路径,输入下面的代码
>mongofiles.exe -d gridfs put 123.mp3
ehco -d 是database 的简称 没有这个数据库会直接创建;
//查看数据库中文件的文档
> db.fs.files.find()
//自己本机无法执行,加了环境变量也没有用处;
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
- 在Studio 3T中查看 fs.files 和fs.chunk (fs 是默认的那个筐)
可以直接创建自己的筐;
GridFS 帮助类
查看 6.1 GridFS 帮助类.md
顶
收藏
关注
评论
作者:王思明
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss
出处:http://www.cnblogs.com/maanshancss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。所有源码遵循Apache协议,使用必须添加 from maanshancss