1. 程式人生 > >java中MongoDB的簡單應用例項

java中MongoDB的簡單應用例項

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在專案中的應用及其原理性的知識我們隨著日後學習和使用的深入,再進行詳細的介紹。