java中MongoDB的簡單應用例項
阿新 • • 發佈:2018-12-24
1 首先載入 MongoDB的jar包。下載Jar包連結
2然後進行相應的配置。如我當前專案是在web-pom.xml 的的節點下配置。
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.9.3</version>
</dependency>
下面寫一個上傳檔案的最簡單的實現。主要是體現mongoDB的使用方法。
/**
* @MethodName : uploadFile
* @Description : 上傳檔案
* @param file :檔案,File型別
* @param id :唯一標示檔案,可根據id查詢到檔案.必須設定
* @param dbName :庫名,每個系統使用一個庫
* @param collectionName:集合名,如果傳入的集合名庫中沒有,則會自動新建並儲存
* @param map:放入你想要儲存的屬性,例如檔案型別(“congtentType”".jpg"),字串型別,區分大小寫,如果屬性沒有的話會自動建立並儲存
*/
public void uploadFile(File file ,String id,String dbName,String collectionName,LinkedHashMap<String, Object> map){
//把mongoDB的資料庫地址配置在外部。
try {
Mongo mongo =getMongo();
//每個系統用一個庫
DB db= mongo.getDB(dbName);
System.out.println(db.toString());
//每個庫中可以分子集
GridFS gridFS= new GridFS(db,collectionName);
// 建立gridfsfile檔案
GridFSFile gridFSFile = gridFS.createFile(file);
//判斷是否已經存在檔案,如果存在則先刪除
GridFSDBFile gridFSDBFile=getFileById(id, dbName, collectionName);
if(gridFSDBFile!=null){
deleteFile(id, dbName, collectionName);
}
//將檔案屬性設定到
gridFSFile.put("_id", id);
//迴圈設定的引數
if (map != null && map.size() > 0) {
for (String key : map.keySet()) {
gridFSFile.put(key, map.get(key));
}
}
//儲存上傳
gridFSFile.save();
} catch (Exception e) {
e.printStackTrace();
}
}
上述程式碼中用到的 getFileById方法,即根據id獲取檔案。
/**
* @MethodName : getFileById
* @Description : 根據Id獲得檔案
* @param id :檔案Id
* @param dbName: 資料庫名
* @param collectionName:集合名
* @return GridFSDBFile
*/
public GridFSDBFile getFileById(String id,String dbName,String collectionName){
GridFSDBFile gridFSDBFile=null;
try {
//獲得mongoDB資料庫連線。
Mongo mongo =getMongo();
//獲得庫
DB db= mongo.getDB(dbName);
//獲得子集
GridFS gridFS= new GridFS(db,collectionName);
//獲得檔案
DBObject query=new BasicDBObject("_id", id);
gridFSDBFile=gridFS.findOne(query);
} catch (Exception e) {
e.printStackTrace();
}
//返回資料
return gridFSDBFile;
}
第一個程式碼段中呼叫到的deleteFile檔案。
/**
* @MethodName : deleteFile
* @Description : 刪除檔案
* @param id:檔案對應的id
* @param dbName:檔案所在的庫
* @param collectionName:檔案所在的集合
*/
public void deleteFile(String id,String dbName,String collectionName){
try {
//獲得mongoDB資料庫連線。
Mongo mongo =getMongo();
//獲得庫
DB db= mongo.getDB(dbName);
//獲得子集
GridFS gridFS= new GridFS(db,collectionName);
//刪除檔案
DBObject query=new BasicDBObject("_id", id);
gridFS.remove(query);
} catch (Exception e) {
e.printStackTrace();
}
}
呼叫的時候,直接呼叫我們寫好的uploadFile類即可。其中dbName 是我們用到的資料庫,collectionName是資料庫中集合的名字。看看上傳成功後資料庫的位置。如下:
當然這僅僅是初步的使用。關於mongoDB在專案中的應用及其原理性的知識我們隨著日後學習和使用的深入,再進行詳細的介紹。