第44章 MongoDB GridFS教程

第44章 MongoDB GridFS教程

GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。

GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。

GridFS 可以更好的存储大于16M的文件。

GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。

GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。

每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在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 添加文件

现在咱们使用 GridFS 的 put 命令来存储 mp3 文件。 调用 MongoDB install 目录下bin的 mongofiles.exetool 。

打开命令提示符,进入到MongoDB的install 目录的bin目录中,找到mongofiles.exe,并输入下面的代码:


    >mongofiles.exe -d gridfs put song.mp3

-d gridfs 指定存储文件的database name称,如果不存在该database,MongoDB会自动创建。如果不存在该database,MongoDB会自动创建。Song.mp3 是音频文件名。

使用以下命令来查看database中文件的文档:


    >db.fs.files.find()

以上命令执行后return 以下文档数据:


    {
       _id: ObjectId('534a811bf8b4aa4d33fdf94d'), 
       filename: "song.mp3", 
       chunkSize: 261120, 
       uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",
       length: 10401959 
    }

咱们可以看到 fs.chunks 集合中所有的区块,以下咱们得到了文件的 _id 值,咱们可以根据这个 _id 获取区块(chunk)的数据:


    >db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

以上实例中,查询return 了 40 个文档的数据,意味着mp3文件被存储在40个区块中。

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 MongoDB Java教程第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 拼了命的努力,只想让以后的生活,过的更好。
  • 为自己的梦想而梦想、为自己的执着而执着、为自己的幸福而幸福。
  • 个人如果学会始终让自己的大脑充满积极,进取,乐观,愉快和有希望的想法,那么他就己经解决了人生的一大奥秘。
  • 我们要在一息尚存的时候,努力博取我们的声名,使时间的镰刀不能伤害我们。
  • 人生应该如烛火一样,从顶燃到底,一直都是光明的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值