mongodb gridfs java_mongodb Gridfs操作
GridFS 介绍
GridFS是MongoDB规范用于存储和检索大文件,如图片,音频文件,视频文件等。这是一种文件系统用来存储文件,但数据存储于MongoDB集合中。GridFS存储文件比其文档大小16MB限制的更大能力。
GridFS的划分一个文件分成块存储数据每个块在一个单独的文件,每个最大尺寸255K。
GridFS默认使用两个集合 fs.files 和 fs.chunks 存储该文件的元数据和块。每组块标识其唯一的_id ObjectID字段。fs.files切断作为父文件。 fs.chunks 文档 files_id 字段链接块到其父文件。
以下是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的安装文件夹下的bin文件夹的mongofiles.exe工具。
打开命令提示符,导航到MongoDB的安装文件夹下的bin文件夹中的mongofiles.exe,并键入下面的代码:
>mongofiles.exe -d gridfs put song.mp3
这里,gridfs上在文件存储在数据库的数据库名称。 如果数据库不存在,MongoDB会自动动态创建一个新文档。 Song.mp3的是上载的文件的名称。要查看数据库文件的文件,你可以使用查询找到:
>db.fs.files.find()
上面的命令返回以下文档:
{_id:ObjectId('534a811bf8b4aa4d33fdf94d'),filename:"song.mp3",chunkSize:261120,uploadDate:newDate(1397391643474),md5:"e4f53379c909f7bed2e9d631e15c1c41",length:10401959}
我们也可以看到在fs.chunks集合涉及使用下面的代码保存的文件都存在于块中,使用以前的查询返回文档ID:
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
在我的示例中,该查询返回40个文档,是整个MP3文件划分成的40块数据。
前言
GridFS是一种将大型文件存储在MongoDB的文件规范:
数据库支持以BSON格式保存二进制对象。 但是MongoDB中BSON对象最大不能超过4MB。
GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档。
为实现这点,该规范指定了一个将文件分块的标准。每个文件都将在文件集合对象中保存一个元数据对象,一个或多个块对象可被组合保存在一个块集合中。
上传文件
Shell
mongofiles put xxx.txt
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
-r 如果存在同名文件则在put成功后删除其他同名文件
通过这样的命令就可以把文件上传到fs集合中。
Java
//获取db
MongoClient mClient = new MongoClient("10.211.55.8");
db = mClient.getDB("test");
//得到Gridfs对象
GridFS fs = new GridFS(db);
//访问要上传的文件
File file = new File("/Users/luoaz/05testDir/files/test1.txt");
//执行保持
GridFSInputFile gfFile = fs.createFile(file);
gfFile.save();
下载文件
Shell
mongofiles get xxx.txt
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
-l 下载到本地的文件名,默认和数据库中的名字一致
通过这样的命令就可以把文件从fs集合中下载到本地。
Java
Java 下载的重点是怎么获取到文件流,获取到文件流后就跟普通的保持文件到本地一样了。
//获取db
MongoClient mClient = new MongoClient("10.211.55.8");
db = mClient.getDB("test");
//得到Gridfs对象
GridFS fs = new GridFS(db);
//要下载到的文件路径
File file = new File("/Users/files/down_test1.txt");
FileOutputStream os = new FileOutputStream(file);
//获得文件流
InputStream is = fs.findOne(new BasicDBObject("filename","test1.txt")).getInputStream();
//下载
byte[] bytes = new byte[1024];
while(is.read(bytes)>0){
os.write(bytes);
}
os.flush();
os.close();
删除文件
Shell
mongofiles delete xxx.txt
删除指定名称的文件,如果存在同名文件则都删除
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
Java
//获取db
MongoClient mClient = new MongoClient("10.211.55.8");
db = mClient.getDB("test");
//得到Gridfs对象
GridFS fs = new GridFS(db);
//删除指定文件名称的文件
fs.remove("test1.txt");
查看文件
Shell
1、list
显示所有文件
mongofiles list xx.txt
显示所有的指定文件名的文件
2、search
搜索指定名称的文件,可以模糊搜索
mongofiles list xx.txt
mongofiles list .txt
Java
这个就跟MongoDB的find用法一样了
/*//保存文件
GridFSFile file = myFS.createFile(new File("D:/aa.png"));
file.save(); */
//输出文件
GridFSDBFile file1 =myFS.findOne("aa.png");
file1.writeTo(new File("D:/image1.png"));
//删除文件
/*GridFSDBFile file =myFS.findOne("image1.jpg");
myFS.remove((ObjectId) file2.getId());*/
mongodb gridfs java_mongodb Gridfs操作相关推荐
- mongodb gridfs java_mongodb gridfs基本使用
Mongodb GridFS图片文件存储解决方案 之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径. 目前需 ...
- mongodb gridfs java_MongoDB基于GridFS管理文件
前言 GridFS是一种将大型文件存储在MongoDB的文件规范: 数据库支持以BSON格式保存二进制对象. 但是MongoDB中BSON对象最大不能超过4MB. GridFS 规范提供了一种透明的机 ...
- mongodb gridfs php,PHP操作MongoDB GridFS 存储文件的详解
//初始化gridfs $conn = new Mongo(); //连接MongoDB $db = $conn->photos; //选择数据库 $grid = $db->getGrid ...
- MongoDB存储文件之GridFS
[MongoDB是什么?] MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间 ...
- MongoDB中的GridFs是什么
本文来介绍下MongoDB的GridFsTemplate如何使用 文章目录 什么是GridFS 为什么要使用GridFS GridFS的两个集合 本文小结 什么是GridFS GridFS是一种将大型 ...
- python gridfs_【已解决】用Python去连接本地mongoDB去用GridFS保存文件
折腾: 期间,命令行方式的mongofiles去put get delete delete_id等,已经基本上搞清楚了. 接着就是去用Python代码,通过driver: 的方式,调用API,去保存数 ...
- python gridfs_python利用mongodb上传图片数据 : GridFS 与 bson两种方式
利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价 ...
- 用python向mongodb插入数据_Python操作MongoDB数据库(一)
Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...
- MongoDB搭建和简单操作(windows环境)
昨天看到fish的MongoDB,但遇到不少问题,于是自己一步一步尝试,将遇到之问题和解决方法记录总结 首先感谢fish!昨天忘了放链接:http://www.cnblogs.com/fish-li/ ...
最新文章
- XML解析之dom4j
- 将js文件打包进dll 方法3
- Java基础知识——Java数组详解
- python 文本处理库_实用又好用,6 款 Python 特殊文本格式处理库推荐
- php过滤多空格_php如何去除多余空格
- 汽车故障检测仪计算机教程,道通MS诊断仪在线编程刷隐藏908SPRO汽车故障检测电脑...
- 计算机信息中心的安全生产责任,信息中心安全生产责任制 (刘.doc
- DHT11温湿度传感器(zigbee)
- Word 论文排版操作顺序
- 初等变换:矩阵与行列式
- 共读四步法:看见正向核心的力量—欣赏式探询共读会
- MPI中的Bcast, Reduce和Gather使用举例
- 基于卷积神经网络CNN的图片分类实现——附代码
- 前端开发Vue项目实战:电商后台管理系统(八)------ 订单管理模块
- [答疑]类图:支付手段和优惠券、金额、积分有关
- Apache Solr 任意文件读取
- 宇视摄像机网页界面登录“提示加载插件失败,点击下载安装最新插件”
- python3格式化输出
- NOIP-2018 提高组(复赛) 模拟试题之--T1 帽子戏法
- 软件架构师:走钢索的人