博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb的gridfs
阅读量:7239 次
发布时间:2019-06-29

本文共 2949 字,大约阅读时间需要 9 分钟。

mongodb中是可以保存二进制文件的,其用于存储文件的文件系统叫做gridfs,有点类似hadoop的HDFS的感觉。

gridfs的入门操作,如保存、查看、删除,还是比较简单的,也不需要复杂的配置,只要mongodb安装好就ok,我的mongodb已经安装好,使用默认的配置。

XXXXX@XXXXX-asus:~$ ls -al mongodb_log_bak.log -rw-r--r-- 1 XXXXX XXXXX 122106  3月 21 14:18 mongodb_log_bak.logXXXXX@XXXXX-asus:~$ mongofiles --host localhost --port 27017 listconnected to: localhost:27017XXXXX@XXXXX-asus:~$ mongofiles --host localhost --port 27017 put mongodb_log_bak.log connected to: localhost:27017added file: { _id: ObjectId('532bde4f11647a7d20f88825'), filename: "mongodb_log_bak.log", chunkSize: 262144, uploadDate: new Date(1395383887367), md5: "37563b840ee4b7fe92d3a6051aac4665", length: 122106 }done!XXXXX@XXXXX-asus:~$ mongofiles --host localhost --port 27017 listconnected to: localhost:27017mongodb_log_bak.log    122106XXXXX@XXXXX-asus:~$ rm mongodb_log_bak.logXXXXX@XXXXX-asus:~$ mongofiles --host localhost --port 27017 get mongodb_log_bak.logconnected to: localhost:27017done write to: mongodb_log_bak.logXXXXX@XXXXX-asus:~$ ls -al mongodb_log_bak.log -rw-rw-r-- 1 XXXXX XXXXX 122106  3月 21 14:42 mongodb_log_bak.logXXXXX@XXXXX-asus:~$ mongofiles --host localhost --port 27017 delete mongodb_log_bak.logconnected to: localhost:27017done!XXXXX@XXXXX-asus:~$

在这个例子中,我将之前的mongodb的log备份出来,mongodb_log_bak.log,用于测试。保存、查询、获取、删除分别是put、list、get、delete,更多的选项也可以用mongofiles --help来看。gridfs也有一些不足的地方,比如,保存文件的时候没有保存时间戳,只保存了文件内容。

也可以登陆mongodb的client看fs.chunks和fs.files。

XXXXX@XXXXX-asus:~$ mongoMongoDB shell version: 2.2.4connecting to: test> show collectionsemp_deptfs.chunksfs.filesmaster_slaveresultsystem.indexestestrep> db.fs.chunks.find({},{
"_id":1,"n":1,"files_id":1}){ "_id" : ObjectId("532bde4fb65a5f88fa9c1649"), "files_id" : ObjectId("532bde4f11647a7d20f88825"), "n" : 0 }> db.fs.files.find(){ "_id" : ObjectId("532bde4f11647a7d20f88825"), "filename" : "mongodb_log_bak.log", "chunkSize" : 262144, "uploadDate" : ISODate("2014-03-21T06:38:07.367Z"), "md5" : "37563b840ee4b7fe92d3a6051aac4665", "length" : 122106 }>

fs.chunks实际上还有一个元素“data”,看名字就知道这个是保存文件的具体内容,由于文件比较大,我就没有列出来,文件的大部分信息在fs.files中有列出,与之前使用mongofiles时候的提示信息一致。其实,把文件存入到GridFS过程中,如果文件大于chunksize,gridfs会把文件分割成多个chunk,再把这些chunk保存到fs.chunks中,最后再把文件信息存入到fs.files中。我的这个实验中,数据文件似乎还是小了一点,只有1个chunk。

于是加大文件,使用cat mongodb_log_bak.log >> 1.txt,执行3次,得到一个源文件3倍大小的文件,这次应该会出现2个chunk,重复上述步骤,发现的确如此

XXXXX@XXXXX-asus:~$ mongoMongoDB shell version: 2.2.4connecting to: test> db.fs.chunks.find({},{
"_id":1,"n":1,"files_id":1}){ "_id" : ObjectId("532be575b65a5f88fa9c164b"), "files_id" : ObjectId("532be575c305f3ace8c29bc1"), "n" : 0 }{ "_id" : ObjectId("532be576b65a5f88fa9c164c"), "files_id" : ObjectId("532be575c305f3ace8c29bc1"), "n" : 1 }> db.fs.files.find(){ "_id" : ObjectId("532be575c305f3ace8c29bc1"), "filename" : "1.txt", "chunkSize" : 262144, "uploadDate" : ISODate("2014-03-21T07:08:38.016Z"), "md5" : "518bd138bd4fd009b96181b207217d04", "length" : 366318 }>

 

转载于:https://www.cnblogs.com/valleylord/p/3615915.html

你可能感兴趣的文章
同步和异步消息机制
查看>>
java nio
查看>>
Win10中文语言包安装方法
查看>>
Spring.NET的AOP怎么玩
查看>>
asp.net core mvc实现伪静态功能asp.net core mvc实现伪静态功能
查看>>
DirectX11中Shader的封装
查看>>
编写一个程序统计输入字符串中:各个数字,空白字符,以及其他所有字符常出现的次数。...
查看>>
移动互联网时代,如何颠覆式协同工作
查看>>
背水一战 Windows 10 (82) - 用户和账号: 获取用户的信息, 获取用户的同意
查看>>
discuz X3全局变量$_G
查看>>
Linux中更改转移mysql数据库目录的步骤
查看>>
AngularJs-04-模拟登陆
查看>>
Ubuntu安装ping工具
查看>>
Keepalived单实例简单环境搭建
查看>>
Publication的 immediate_sync 属性
查看>>
屌丝Cent OS服务解密
查看>>
linux下查看和添加PATH环境变量
查看>>
docker swarm集群部署
查看>>
RMAN内部原理介绍
查看>>
如何绕过ORA-00701错误和降低bootstrap对象的高水位
查看>>