MongoDB基于GridFS管理文件
前言
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用法一样了
备注
文件操作主要依赖com.mongodb.gridfs 下的几个类,参考网址
http://api.mongodb.org/java/3.0/com/mongodb/gridfs/GridFS.html
MongoDB基于GridFS管理文件的更多相关文章
- Spring Boot使用MongoDB GridFS进行文件的操作
1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的ch ...
- MongoDB入门(8)- c#通过操作MongoDB GridFS实现文件的数据库存储
GridFS介绍 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS GridFS长啥样 /* 1 */ { "_id" : ObjectId(& ...
- c#通过操作mongodb gridfs实现文件的数据库存储
@(编程) 源码 using MongoDB.Driver; using MongoDB.Driver.GridFS; using System.IO; namespace Wisdombud.Mon ...
- MongoDB图形化管理工具
NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...
- 用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)
最近在部署公司服务器的nginx + mongodb + gridfs环境: 搜索了N多文档,基本上都一样,期间遇到很多问题: 下面是整理的一份搭建文档: 摘要 nginx-gridfs是一个ngin ...
- Oracle 基于用户管理恢复的处理
================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...
- Ubuntu下的MongoDB GUI 可视化管理工具
目录 1 Robo 3T 2 NoSQLBooster for MongoDB(收费) 3 JetBrains Plugin Repository :: Mongo Plugin Ubuntu下的Mo ...
- MongoDB 生态 – 可视化管理工具
工欲善其事,必先利其器,我们在使用数据库时,通常需要各种工具的支持来提高效率:很多新用户在刚接触 MongoDB 时,遇到的问题是『不知道有哪些现成的工具可以使用』,本系列文章将主要介绍 MongoD ...
- GridFS大文件的添加、获取、查看、删除
GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种: 存储巨大的文件,比如视频.高清图片等. 利用GridFS可以简化需求. GridFS会直接利用已经建立的 ...
随机推荐
- 怎么解决tomcat占用8080端口问题图文教程
怎么解决tomcat占用8080端口问题 相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclipse之后,发现 Several ports (8080, 8009) required ...
- linux内核介绍
linux系统可以分为:包括用户空间和内核空间两个部分. 现代cpu通常实现了不同的工作模式,以ARM为例,实现了7种工作模式: 用户模式.快速中断.外部中断.管理模式.数据访问中止.系统模式.未定义 ...
- 详解MySQL第一篇—MySQL简要介绍及DDL语句
背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...
- 用tophat和cufflinks分析RNAseq数据[转载]
转自:http://blog.sciencenet.cn/home.php?mod=space&uid=635619&do=blog&id=884213 //今天看到一篇非常好 ...
- java Object转换成指定的类型
java Object转换成指定的类型 /** * Object转成指定的类型 * @param obj * @param type * @param <T> * @return */ p ...
- SQL Server创建事务——锁
参考地址:http://www.cnblogs.com/knowledgesea/p/3714417.html 事务定义: 事务是作为单个逻辑单元执行的一系列操作,它是一个不可分割的工作逻辑单元.它包 ...
- angular-selcet
常规用法代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- 有关RDD的基础学习1
1.spark rdd为什么不能嵌套? 譬如 val rdd1=sc.parallel(range(1,100)) val rdd2=sc.parallel(range(1,100)) ...
- ElasticSearch recovery过程源码分析
[ES版本] 5.5.0 [分析过程] 找到Recovery有6种状态 public class RecoveryState implements ToXContent, Streamable { p ...
- node异步流程控制async
1.串行无关联:async.series(tasks,callback); 多个函数依次执行,之间没有数据交换,其中一个函数出错,后续函数不再执行 async.series({ one: functi ...