MongoDB_GridFS_存储文件
GridFS
mongoDB除了保存各种文档(JOSN结构)外还能够保存文件。GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对于那些巨大的文件,比如视频、高清图片等。
GridFS使用两个表来存储数据:
files:包含元数据对象
文件的元数据放在这个集合里面,默认fs.files。这个里面的每个文档表示GridFS中的一个文件,与文件相关的自定义元数据也保存在其中,除了用户自定义的键,GridFS还有默认的一些键:
- _id:文件唯一的id,在块中为“files_id”键的值存储
- length:文件内容总的字节数
- chunksize:每块的大小,以字节为单位。默认25K,可以调整
- uploadDate:文件存入的时间
- md5:文件内容的md5校验,由服务端生成
chunks:包含其他一些相关信息的二进制块
GridFS的块有个单独的集合。默认情况下,块将使用fs.chunks集合,如果有需要可以覆盖。这个块集合里面文档的结构非常简单:
{
"_id":ObjectId("......"),
"n":0,
"data":BinData("......"),
"files_id":ObjectId(".......")
}
- _id:标志唯一
- n:表示块的编号,也就是这个块在原文件中的顺序号
- data:包含组成文件块的二进制数据
- files_id: 包含这个块元数据的文件文档的"_id"
使用mongofile来操作GridFS:
//将 “aaaa” 写入foo.txt文件中
c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>echo "aaaa" > foo.txt
//将foo.txt保存到GridFS中
c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe put foo.txt
connected to: 127.0.0.1
added file: { _id: ObjectId('53449f0becdebde54ff76105'), filename: "foo.txt", ch
unkSize: 262144, uploadDate: new Date(1397006091696), md5: "819596956779801cced4
fb21379bf023", length: 9 }
done!
//查看
c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe list
connected to: 127.0.0.1
foo.txt 9
//获取
c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe get foo.txt
connected to: 127.0.0.1
done write to: foo.txt
命令说明
put:将文件系统中的一个文件添加到GridFS
list:会把所有添加到GridFS中的文件列出来
get:put的反向操作
在mongodb工具中查看GridFS

MongoDB_GridFS_存储文件的更多相关文章
- Android获取可存储文件所有路径
引言:大家在做app开发的时候,基本都会保存文件到手机,android存储文件的地方有很多,不像ios一样,只能把文件存储到当前app目录下,并且android手机由于厂家定制了rom,sdcard的 ...
- mysql下存储文件问题
ibdata1 & mysql-bin 问题:磁盘空间报警,经查发现ibdata1和mysql-bin日志占用空间太多(其中ibdata1超过120G,mysql-bin超过80G) 原因:i ...
- 【荐】PHP操作MongoDB GridFS 存储文件,如图片文件
GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容, ...
- 【MongoDB】6.关于MongoDB存储文件的 命令执行+代码执行
参考:http://www.runoob.com/mongodb/mongodb-gridfs.html 1.命令执行 MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSO ...
- Android使用Linux mount获取SdCard存储文件夹
Android的智能手机各不同样.如今非常多Android智能手机都是自带存储,有的还带有扩展内存的Sdcard卡槽. 在Android开发中,非常多时候依据Android提供的获取SdCard存储方 ...
- DLNA架构在机顶盒上播放云存储文件的实现
DLNA 架构在机顶盒上播放云存储文件的实现 摘要: 随着越来越多的数码设备,音像设备等对 UPNP 协议的支持和普及,业界对多媒体内容提供服务的需求越越来越强烈,为了实现遵循 UPNP 协议和 ...
- Android - 数据存储 -存储文件
Android使用的文件系统和其他平台的基本磁盘的文件系统很相似.这里将要介绍如何使用File API在Android文件系统中读写文件. File对象适合按顺序读写大量的数据.例如,适合图片文件或者 ...
- 使用 gridfs-stream 存储文件遇到的一个坑。
前一段时间参读了某个coder写的用 gridfs-stream 来存储文件,感觉不错就自己用 gridfs-stream 模块写了一个文件存储服务,但是发现存储的文件总是删不掉, 我调用的是GFS的 ...
- wp8数据存储--独立存储文件 【转】
出自 : http://www.cnblogs.com/MyBeN/p/3339019.html 文章篇幅有点大,建议去源网看看 1.调用手机的独立存储 例如:IsolatedStorageFile ...
随机推荐
- string数组转化成int数组
string idsStr = "1,2,3,4,5"; int[] ids = idsStr.Split(',').Select(Int32.Parse).ToArray();
- Init.rc分析(刘举奎)
http://www.360doc.com/content/14/0926/20/13253385_412582822.shtml
- 64位系统访问注册表SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
public int ChecNonkWoW64() { try { ; string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersio ...
- swift 自学小计
返回多个value func Myfunc()->(double,double,double) { return (3.14,2.33,9.88) } 动态参数 func Myfunc(numb ...
- php 读取二进制文件
$file_pointer = fopen($file, "r"); $file_read = fread($file_pointer, filesize($file)); //$ ...
- DHCP详解
概述 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分 ...
- openstack controller ha测试环境搭建记录(四)——配置mysql数据库集群
内容正式开始前,我已经在集群中添加了新的节点controller1(IP地址为10.0.0.14). 在所有节点上安装软件:# yum install -y mariadb-galera-server ...
- Octave使用感想
Octave是一门比较 简单.原始 的语言.从某方面来说和 shell 语言类似,只不过,shell语言主要用于 操作系统管理方面,而Octave侧重于科学计算方面. 语言本身没有提供或者说很简单的 ...
- UITableView回调和table相关成员方法详解
http://blog.csdn.net/kingsley_cxz/article/details/9123959 1.UITableView的datasource实现: //回调获取每个sectio ...
- 怎么把自己电脑上开发的项目发布到自己电脑IIS上面?
windowsxp中: 步骤: 1.新建一个文件夹,把项目发布到里面(发布的时候需要注意的是: ) 注意:发布方法要选择:文件系统 目标位置选择:你新建来发布的那个文件夹名称 2.在IIS中新建网站 ...