首页  >  文章  >  后端开发  >  MongoDB 的 GridFS 详细分析

MongoDB 的 GridFS 详细分析

WBOY
WBOY原创
2016-08-08 09:22:31957浏览
GridFS简介GridFSMongoDB中的一个内置功能,可以用于存放大量小文件。http://www.mongodb.org/display/DOCS/GridFShttp://www.mongodb.org/display/DOCS/GridFS+Specification
GridFS使用MongoDB提供了一个命令行工具mongofiles可以来处理GridFS,在bin目录下。列出所有文件:mongofiles list上传一个文件:mongofiles put xxx.txt下载一个文件:mongofiles get xxx.txt查找文件:mongofiles search xxx    //会查找所有文件名中包含“xxx”的文件mongofiles list xxx //会查找所有文件名以“xxx”为前缀的文件参数说明:–d 指定数据库 ,默认是fsMongofiles list –d testGridfs-u –p 指定用户名,密码-h  指定主机-port 指定主机端口-c 指定集合名,默认是fs-t 指定文件的MIME类型,默认会忽略使用MongoVUE来查看,管理GridFSMongoVUE地址:http://www.mongovue.com/MongoVUE是个免费软件,但超过15天后功能受限。可以通过删除以下注册表项来解除限制:[HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-821C3-21C5-CE21-34A484D54444}\4FF78130]把这个项下的值全删掉就可以了。
nginx-gridfs模块的安装使用项目主页:https://github.com/mdirolf/nginx-gridfs通过nginx-gridfs,可以直接用http来访问GridFS中的文件。1. 安装安装各种依赖包:zlibpcreopensslubuntu下可能是以下命令:sudo apt-get install zlib1g-dev            //貌似sudo apt-get install zlib-dev 不能安装sudo apt-get install libpcre3 libpcre3-devsudo apt-get install openssl libssl-dev安装git(略)git下载nginx-gridfs的代码:git clone git://github.com/mdirolf/nginx-gridfs.git    cd nginx-gridfs    git submodule init    git submodule update
下载nginxwget http://nginx.org/download/nginx-1.0.12.ziptar zxvf nginx-1.0.12.zipcd nginx-1.0.12 ./configure --add-module=的路径>makesudo make install如果编译出错,则在configure时加上--with-cc-opt=-Wno-error 参数。
2. 配置nginxserver的配置中加上以下   location /pics/ {                gridfs pics                field=filename                type=string;                mongo 127.0.0.1:27017;        }上面的配置表示:数据库是pics,通过文件名filename来访问文件,filename的类型是string目前只支持通过idfilename来访问文件。启动nginx/usr/local/nginx/sbin/nginxMongoVUE把一个图片001.jpg上传到pics数据库中。打开:http://localhost/pics/001.jpg如果成功,则可以看到显示图片了。
注意事项1. GridFS不自动处理md5相同的文件,对于md5相同的文件,如果想在GridFS中只有一个存储,要用户自已处理。Md5值的计算由客户端完成。2. 因为GridFS在上传文件过程中是先把文件数据保存到fs.chunks,最后再把文件信息保存到fs.files中,所以如果在上传文件过程中失败,有可能在fs.chunks中出现垃圾数据。这些垃圾数据可以定期清理掉。

以上就介绍了MongoDB 的 GridFS 详细分析,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn