在JAVA中使用MongoDB

jopen 10年前發布 | 99K 次閱讀 MongoDB NoSQL數據庫

在一個項目中決定了使用nosql中的mongdb,在本篇博文中記錄了在java中創建mongdb連接,配置mongdb連接池和簡單的CRUD操作,慢慢會更新一些其他操作.

首先,下載mongdb對JAVA的支持,點擊這里下載驅動包,這里博主下載的是2.10.1版。

mongdb版本為2.4.9

在項目中導入該驅動包。

打開shell,在終端輸入mongo,顯示如下

在JAVA中使用MongoDB

只有默認的三個數據庫。

新建一個java project

代碼如下,

1.操控mongdb連接,使用MongoOptions來設置一些參數。

package Util;

import java.net.UnknownHostException;

import com.mongodb.DB; import com.mongodb.Mongo; import com.mongodb.MongoOptions;

//數據庫工具類 public class MongoDBUtil {     private static Mongo mongo = null;          private static String DBString = "MongoDBTest";//數據庫名     private static String hostName = "localhost";//主機名     private static int port = 27017;//端口號     private static int poolSize = 10;//連接池大小          private MongoDBUtil(){              }          //獲取數據庫連接     public static DB getDB(){         if(mongo == null){             init();         }                  return mongo.getDB(DBString);     }               //初始化數據庫     private static void init(){         try {             //實例化Mongo             mongo = new Mongo(hostName, port);             MongoOptions opt = mongo.getMongoOptions();             //設置連接池大小             opt.connectionsPerHost = poolSize;         } catch (UnknownHostException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     } }</pre>

 


2.基本操作接口

package DAO;

import java.util.List;

import com.mongodb.BasicDBObject;

//數據庫CRUD基本操作 public interface BaseDAO {     public boolean insert(String collectionName, BasicDBObject bean);          public boolean delete(String collectionName, BasicDBObject bean);          public List find(String collectionName, BasicDBObject bean);          public boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean);           }</pre>

3.基本操作實現

package DAO.Impl;

import java.util.List;

import com.mongodb.BasicDBObject; import com.mongodb.DB;

import Util.MongoDBUtil; import DAO.BaseDAO;

//數據庫基本操作實現 public class BaseDAOImpl implements BaseDAO {

    @Override     public boolean insert(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         db.getCollection(collectionName).insert(bean);         return false;     }

    @Override     public boolean delete(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         db.getCollection(collectionName).remove(bean);         return false;     }

    @Override     public List find(String collectionName, BasicDBObject bean) {         DB db = MongoDBUtil.getDB();         List list = db.getCollection(collectionName).find(bean).toArray();         return list ;     }

    @Override     public boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean) {         DB db = MongoDBUtil.getDB();         db.getCollection(collectionName).update(oldBean, newBean);         return false;     }

}</pre>

4.基本操作測試

4.1添加文檔操作

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();
        BasicDBObject beanOne = new BasicDBObject();
        beanOne.put("name", "kakakaka");
        beanOne.put("sex", "男");
        beanOne.put("age", 20);
        baseDAOImpl.insert("test", beanOne);

執行后結果

在JAVA中使用MongoDB

可以看到mongdb會自動檢測是否存在數據庫MongoDBTest,如果不存在則新建一個,然后再檢測是否存在文檔集合test,如果不存在則新建一個,最后插入數據。

4.2查詢文檔操作     

        List<BasicDBObject> list = baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka"));
        for(BasicDBObject i : list){
            System.out.println(i.get("name"));
            System.out.println(i.get("sex"));
            System.out.println(i.get("age"));
        }

輸出結果如下

kakakaka
男
20

4.3修改文檔操作如下

        BasicDBObject oldBean = (BasicDBObject) baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka")).get(0);
        BasicDBObject newBean = (BasicDBObject) oldBean.clone();
        newBean.put("name", "gugugugu");
        System.out.println(oldBean.get("name"));
        System.out.println(newBean.get("name"));
        baseDAOImpl.update("test", oldBean, newBean);

控制臺輸出結果

kakakaka
gugugugu

在JAVA中使用MongoDB

4.4刪除文檔

先再向數據庫插入一條數據

注意,mongdb區分一個文檔中的不同數據是依賴它自己向每條數據中賦的"_id"

所以再插入這樣一條數據

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();
        BasicDBObject beanOne = new BasicDBObject();
        beanOne.put("name", "gugugugu");
        beanOne.put("sex", "男");
        beanOne.put("age", 20);
        baseDAOImpl.insert("test", beanOne);

結果如下

在JAVA中使用MongoDB

執行刪除操作

首先根據"_id"將文檔中第二條數據修改

        baseDAOImpl.update("test", new BasicDBObject("_id", new ObjectId("5471c9db44aeeb8b5524f2ea"))
                                                                    , new BasicDBObject("name","kakakaka").append("age", 20));

結果如下

在JAVA中使用MongoDB

將"name" 等于 "kakakaka"的數據刪除

        baseDAOImpl.delete("test", new BasicDBObject("name","kakakaka"));

在JAVA中使用MongoDB

 

后續其他操作更新。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!