mongodb支援多種語言,並且提供了多種語言的驅動。
這篇部落客要介紹如何mongodb儲存以及讀取檔案 前提:下載相應的驅動:官網上下載:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ 本人使用mongo-2.10.1.jar版本: mongodb操作檔案,主要是通過GridFS類。隱藏檔主要存放在fs中了,其中的fs是資料庫預設的。
並且GridFS是直接與資料庫打交道,與collection集合無關。 具體的操作如下:其中有相應的注釋:
package com.mongo.dao;import java.io.File;import java.util.List;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBObject;import com.mongodb.Mongo;import com.mongodb.gridfs.GridFS;import com.mongodb.gridfs.GridFSDBFile;import com.mongodb.gridfs.GridFSInputFile;/*** 使用mongodb對檔案的讀取操作* @author lhy**/public class GridFSTest { public static void main(String[] args) throws Exception { //saveFile(); readFile(); } /** * 隱藏檔 */ public static void saveFile() throws Exception{ //串連伺服器 Mongo mongo=new Mongo(); //串連資料庫 DB db=mongo.getDB("testGridFS"); //檔案操作是在DB的基礎上實現的,與表和文檔沒有關係 GridFS gridFS=null; gridFS=new GridFS(db); String fileName="vltest.log"; File readFile=new File("d:/"+fileName); GridFSInputFile mongofile=gridFS.createFile(readFile); //可以再添加屬性 mongofile.put("path","d:/"+fileName); //儲存 mongofile.save(); } /** * 讀檔案,讀到磁碟上 * @throws Exception */ public static void readFile() throws Exception{ //連結的伺服器 Mongo mongo=new Mongo(); //串連資料庫 DB db=mongo.getDB("testGridFS"); GridFS gridFs=null; gridFs=new GridFS(db); //尋找條件 DBObject query=new BasicDBObject(); //查詢的結果: List<GridFSDBFile> listfiles=gridFs.find(query); GridFSDBFile gridDBFile=listfiles.get(0); //獲得其中的檔案名稱 //注意 : 不是fs中的表的列名,而是根據調試gridDBFile中的屬性而來 String fileName=(String)gridDBFile.get("filename"); System.out.println("從Mongodb獲得檔案名稱為:"+fileName); File writeFile=new File("d:/"+fileName); if(!writeFile.exists()){ writeFile.createNewFile(); } //把資料寫入磁碟中 //查看相應的提示 gridDBFile.writeTo("d:/a.txt"); //寫入檔案中 gridDBFile.writeTo(writeFile); }}
其中圖片也是這麼儲存的,把圖片當作檔案來儲存。 運行上述儲存結果如下: