当前位置: 首页 > news >正文

linux目录中grid,用MongoDB基于GridFS存储文件

在Mongodb中以GridFSB方式存放文件有两种方式:1、命令行方式mongofiles 2、客户端驱动编程(以Java为例)

相关阅读:

1、命令行方式mongofiles

在bin目录下有一个命令mongofiles.exe,即可完成命令行下向Mongodb数据库中插入文件数据。这里以前述所搭的4个分片,每分片3个复制集,3个ConfigSever ,1个路由节点的Windows的模拟集群为例。

D:/mongodb-win32-i386-1.8.0/bin>mongofiles.exe -host 127.0.0.1:50000 -d wlb put mongodump.exe

connected to: 127.0.0.1:50000

added file: { _id: ObjectId('4d91dbc1fb02c495a0a479d7'), filename: "mongodump.exe", chunkSize: 262144, uploadDate: new Date(1301404609850), md5: "647dcae88077e6

fa2bb3be6b0cdebb07", length: 3271680 }

done!

向数据库wlb中插入一个文件,即Mongodb/bin/mongodump.exe,所使用的Mongodb集群的路由节点为127.0.0.1,端口为50000,其中put为命令,表示向Mongodb中上传文件,也存在get、delete两个其它命令,分别表示取得文件和删除文件。

以如下命令启动mongo,进入wlb数据库,执行 db.fs.files.find()即可看到GridFS中的文件列表.

D:/mongodb-win32-i386-1.8.0/cmd>cd d:/mongodb-win32-i386-1.8.0/bin

D:/mongodb-win32-i386-1.8.0/bin>call mongo.exe 127.0.0.1:50000/admin

MongoDB shell version: 1.8.0

connecting to: 127.0.0.1:50000/admin

> use wlb

switched to db wlb

> db.fs.files.find()

{ "_id" : ObjectId("4d91dbc1fb02c495a0a479d7"), "filename" : "mongodump.exe", "chunkSize" : 262144, "uploadDate" : ISODate("2011-03-29T13:16:49.850Z"), "md5" :

"647dcae88077e6fa2bb3be6b0cdebb07", "length" : 3271680 }

2、以Java API来存取文件

这里以mongo-2.5.jar为例,代码如下:

packagecom.zhangzk.mongodb;

importjava.io.File;

importjava.net.UnknownHostException;

importjava.util.Date;

importjava.util.List;

importcom.mongodb.BasicDBObject;

importcom.mongodb.DB;

importcom.mongodb.DBCollection;

importcom.mongodb.DBCursor;

importcom.mongodb.DBObject;

importcom.mongodb.Mongo;

importcom.mongodb.MongoException;

importcom.mongodb.gridfs.GridFS;

importcom.mongodb.gridfs.GridFSInputFile;

publicclassMongoDBClientTest {

publicstaticvoidmain(String[] args) {

//      initData();

//      query();

initData4GridFS();

}

privatestaticvoidinitData4GridFS()   {

longstart =newDate().getTime();

try{

Mongo db =newMongo("127.0.0.1",50000);

DB mydb = db.getDB("wlb");

File f =newFile("D://study//document//MySQL5.1参考手册.chm");

GridFS myFS =newGridFS(mydb);

GridFSInputFile inputFile = myFS.createFile(f);

inputFile.save();

DBCursor cursor = myFS.getFileList();

while(cursor.hasNext()){

System.out.println(cursor.next());

}

db.close();

longendTime =newDate().getTime();

System.out.println(endTime - start);

System.out.println((endTime - start) /10000000);

}catch(Exception e) {

e.printStackTrace();

}

}

}0b1331709591d260c1c78e86d0c51c18.png

相关文章:

  • leetCode-Majority Element
  • linux bind 服务器同步,bind9.7 智能dns主从同步配置
  • nginx-php-fpm
  • linux打包解压工具,打包压缩、解压缩工具详解
  • linux邮件服务器安装与配置过程,Linux操作系统邮件服务器的搭建过程解析
  • Java提高十五:容器元素比较ComparableComparator深入分析
  • linux addr2line 用法,addr2line的用法
  • svn项目添加到tomcat后,tomcat无法打开问题解决
  • linux imq原理图,(linux内核IMQ源码实现分析.doc
  • rman从aix到linux跨平台恢复,利用RMAN跨平台迁移数据库
  • Linux权限分析
  • tcp连接超时断开linux,linux – FTP’ing大文件时如何防止TCP连接超时?
  • 【BZOJ3203】[Sdoi2013]保护出题人 二分+凸包
  • c语言二级指针的作用,C语言中二级指针的实例详解
  • c语言二叉搜索树程序,二叉搜索树 C语言实现
  • 《剑指offer》分解让复杂问题更简单
  • django开发-定时任务的使用
  • Java 内存分配及垃圾回收机制初探
  • Java 最常见的 200+ 面试题:面试必备
  • java小心机(3)| 浅析finalize()
  • Linux CTF 逆向入门
  • Netty 4.1 源代码学习:线程模型
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 关于 Cirru Editor 存储格式
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何设计一个比特币钱包服务
  • 如何学习JavaEE,项目又该如何做?
  • 大数据全解:定义、价值及挑战
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (五)c52学习之旅-静态数码管
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)jQuery 基础
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Core与存储过程(一)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .net快速开发框架源码分享
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ajaxupload] - 上传文件同时附件参数值
  • [Angular] 笔记 20:NgContent
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C#]winform部署PaddleOCRV3推理模型
  • [C/C++]数据结构 循环队列
  • [C++]C++基础知识概述
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理