MongoDB_GridFS_存储文件

Posted Asu_PC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB_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_GridFS_存储文件的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

如何将代码片段存储在 mongodb 中?

这些 C++ 代码片段有啥作用?

sql 这些代码片段将演示如何逐步使用PolyBase。你应该有一个blob存储和存储秘密方便

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

这些角度电子邮件指令代码片段如何连接