MongoDB_GridFS_存储文件

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: GridFS mongoDB除了保存各种文档(JOSN结构)外还能够保存文件。GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对于那些巨大的文件,比如视频、高清图片等。

GridFS

mongoDB除了保存各种文档(JOSN结构)外还能够保存文件。GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对于那些巨大的文件,比如视频、高清图片等。

GridFS使用两个表来存储数据:

  • files:包含元数据对象

文件的元数据放在这个集合里面,默认fs.files。这个里面的每个文档表示GridFS中的一个文件,与文件相关的自定义元数据也保存在其中,除了用户自定义的键,GridFS还有默认的一些键:

  1. _id:文件唯一的id,在块中为“files_id”键的值存储
  2. length:文件内容总的字节数
  3. chunksize:每块的大小,以字节为单位。默认25K,可以调整
  4. uploadDate:文件存入的时间
  5. md5:文件内容的md5校验,由服务端生成
  • chunks:包含其他一些相关信息的二进制块

GridFS的块有个单独的集合。默认情况下,块将使用fs.chunks集合,如果有需要可以覆盖。这个块集合里面文档的结构非常简单:

1 {  
2 "_id":ObjectId("......"),  
3 "n":0,  
4 "data":BinData("......"),  
5 "files_id":ObjectId(".......")  
6 }  
  1. _id:标志唯一
  2. n:表示块的编号,也就是这个块在原文件中的顺序号
  3. data:包含组成文件块的二进制数据
  4. files_id: 包含这个块元数据的文件文档的"_id"

使用mongofile来操作GridFS:

 1   //将 “aaaa” 写入foo.txt文件中  
 2  c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>echo "aaaa" > foo.txt  
 3  //将foo.txt保存到GridFS中  
 4  c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe put foo.txt  
 5  connected to: 127.0.0.1  
 6  added file: { _id: ObjectId('53449f0becdebde54ff76105'), filename: "foo.txt", ch  
 7  unkSize: 262144, uploadDate: new Date(1397006091696), md5: "819596956779801cced4  
 8  fb21379bf023", length: 9 }  
 9  done!  
10 //查看  
11 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe list  
12 connected to: 127.0.0.1  
13 foo.txt 9  
14 //获取  
15 c:\MongoDB\mongodb_win32_x86_64_2.2.7\bin>mongofiles.exe get foo.txt  
16  connected to: 127.0.0.1  
17  done write to: foo.txt  

命令说明 

put:将文件系统中的一个文件添加到GridFS

list:会把所有添加到GridFS中的文件列出来

get:put的反向操作

在mongodb工具中查看GridFS

当神已无能为力,那便是魔渡众生
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
7月前
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
226 0
|
NoSQL MongoDB Docker
Docker Compose安装MongoDB,并向宿主机映射数据文件/配置文件/日志文件
本文为博主实践Docker Compose方式安装MongoDB记录,希望对大家有所帮助。
2315 0
|
NoSQL MongoDB 数据安全/隐私保护
Docker 安装MongoDB 以及 相关配置文件、数据文件映射
本文是博主使用docker安装mongodb的方法记录,希望对大家有所帮助。
1784 0
|
3月前
|
存储 SQL NoSQL
第3期 MongoDB与SQL存储
第3期 MongoDB与SQL存储
57 0
|
4月前
|
存储 NoSQL MongoDB
MongoDB【部署 04】Windows系统实现MongoDB多磁盘存储
MongoDB【部署 04】Windows系统实现MongoDB多磁盘存储
192 0
|
5月前
|
存储 NoSQL Shell
如何将阿里云WiredTiger引擎的MongoDB物理备份文件恢复至自建数据库
数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章将给你提供一个思路(或许你按照阿里云官网的文档一顿操作下来,并不是那么顺利,有一些报错,无法登录...)
|
存储 JSON 自然语言处理
Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案
书接上回,之前有一篇文章提到了标签云系统的构建:[Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合)](https://v3u.cn/a_id_138),但是这篇只是浅显的说明了一下如何进行切词以及前端如何使用wordcloud2.js进行前端展示,本次主要讨论下标签分词切出来之后,如何进行存储。
Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案
|
SQL NoSQL 数据可视化
如何删除MongoDB数据库中的文件?
如何删除MongoDB数据库中的文件?
280 0
|
存储 NoSQL 前端开发
如何向MongoDB中存入文件?
如何向MongoDB中存入文件?
344 0
|
存储 JSON NoSQL
SpringBoot2.x使用MongoDB存储数据
`MongoDB`在企业级项目中一般用于存储文档信息、图片资源等,`MongoDB`的内容完全是以 `JSON`字符串的形式进行存储的,所以我们在获取数据时通过简单的 `反序列化`就可以完成与项目内的实体类转换,不过这个过程是自动的,不需要我们手动进行反序列化处理。