• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > MongoDB学习笔记之GridFS使用介绍

MongoDB学习笔记之GridFS使用介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了MongoDB学习笔记之GridFS使用介绍等相关知识,希望本文的分享对您有所帮助

GridFS简介

GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

GridFS使用

MongoDB提供了一个命令行工具mongofiles可以来处理GridFS,

列出所有文件:
mongofiles list
</div>
上传一个文件:
mongofiles put xxx.txt
</div>
下载一个文件:
mongofiles get xxx.txt
</div>
查找文件:
//会查找所有文件名中包含“xxx”的文件
mongofiles search xxx
//会查找所有文件名以“xxx”为前缀的文件
mongofiles list xxx
</div>
参数说明:
–d 指定数据库 ,默认是fs,Mongofiles list –d testGridfs
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
-c 指定集合名,默认是fs
-t 指定文件的MIME类型,默认会忽略
GridFS实现原理

GridFS在数据库中,默认使用fs.chunks和fs.files来存储文件。
其中fs.files集合存放文件的信息,fs.chunks存放文件数据。

一个fs.files集合中的一条记录内容如下,即一个file的信息如下:
{
"_id" : ObjectId("4f4608844f9b855c6c35e298"),       //唯一id,可以是用户自定义的类型
"filename" : "CPU.txt",      //文件名
"length" : 778,      //文件长度
"chunkSize" : 262144,    //chunk的大小
"uploadDate" : ISODate("2012-02-23T09:36:04.593Z"), //上传时间
"md5" : "e2c789b036cfb3b848ae39a24e795ca6",      //文件的md5值
"contentType" : "text/plain"     //文件的MIME类型
"meta" : null    //文件的其它信息,默认是没有”meta”这个key,用户可以自己定义为任意BSON对象
}
</div>

对应的fs.chunks中的chunk如下:
{
"_id" : ObjectId("4f4608844f9b855c6c35e299"),    //chunk的id
"files_id" : ObjectId("4f4608844f9b855c6c35e298"),  //文件的id,对应fs.files中的对象,相当于fs.files集合的外键
"n" : 0,     //文件的第几个chunk块,如果文件大于chunksize的话,会被分割成多个chunk块
"data" : BinData(0,"QGV...")     //文件的二进制数据,这里省略了具体内容
}
</div>

默认chunk的大小是256K。
所以在把文件存入到GridFS过程中,如果文件大于chunksize,则把文件分割成多个chunk,再把这些chunk保存到fs.chunks中,最后再把文件信息存入到fs.files中。

在读取文件的时候,先据查询的条件,在fs.files中找到一个合适的记录,得到“_id”的值,再据这个值到fs.chunks中查找所有“files_id”为“_id”的chunk,并按“n”排序,最后依次读取chunk中“data”对象的内容,还原成原来的文件。

注意事项

1.GridFS不自动处理md5相同的文件,对于md5相同的文件,如果想在GridFS中只有一个存储,要用户自已处理。Md5值的计算由客户端完成。
2.因为GridFS在上传文件过程中是先把文件数据保存到fs.chunks,最后再把文件信息保存到fs.files中,所以如果在上传文件过程中失败,有可能在fs.chunks中出现垃圾数据。这些垃圾数据可以定期清理掉。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11mongodb 添加用户及权限设置详解
  • 2017-05-11mongodb 数据库操作详解--创建,切换,删除
  • 2017-05-11mongodb错误tcmalloc: large alloc out of memory, printing stack and exiting解决办法
  • 2017-05-11mongodb 数据库操作--备份 还原 导出 导入
  • 2017-05-11Java操作MongoDB数据库示例分享
  • 2017-05-11MongoDB入门教程之Windows下的MongoDB数据库安装图解
  • 2017-05-11MongoDB系列教程(七):MongoDb数据结构详解
  • 2017-05-11MongoDB入门教程之聚合和游标操作介绍
  • 2017-05-111亿条记录的MongoDB数据库随机查询性能测试
  • 2017-05-11MongoDB的创建、更新和删除

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • centos6.5中安装mongodb简明总结
    • MongoDB入门教程之常用的运维技术介绍
    • MongoDB分片测试
    • MongoDB查询操作限制返回字段的方法
    • MongoDB系列教程(七):MongoDb数据结构详解
    • 关于NoSQL之MongoDB的一些总结
    • mongodb权限设置之添加管理员、普通用户的方法
    • MongoDB数据库中索引(index)详解
    • MongoDB aggregate 运用篇个人总结
    • mongodb 集群重构和释放磁盘空间实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有