java操作mongoDB實現CURD
java操作mongoDB
mongoDB作為一個牛氣哄哄的nosql內存數據庫,的確有很多優點,對于大數據量、高并發、弱事務的互聯網應用,MongoDB可以應對自如。接觸 到mongoDB 參考了下api實現了增刪改查、mongoDB 是面向對象設計,不用寫sql語句 直接操作api 方法 就可以實現,這會兒數據庫語句寫不好的娃娃們有福了。直接貼碼:
DataTest.java
package com.zk.db; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.bson.types.ObjectId; import org.junit.Test; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; /** * 測試mongodb curd * @author zk * @time 2015年4月24日23:19:15 */ public class DataTest { // 1.建立一個Mongo的數據庫連接對象 static Mongo connection = null; // 2.創建相關數據庫的連接 static DB db = null; static { try { connection = new Mongo("127.0.0.1:27017"); //默認鏈接地址 } catch (Exception e) { e.printStackTrace(); } db = connection.getDB("one");//獲取數據庫名稱 } /** * 測試創建數據文檔集合 類似 數據表 person * @throws UnknownHostException * @throws MongoException */ @Test public void test1() throws UnknownHostException, MongoException { // 實例化 MongoDb mongoDb = new MongoDb("one"); mongoDb.createCollection("person"); } /** * 測試添加一條記錄 * * @throws UnknownHostException * @throws MongoException */ @Test public void test2() throws UnknownHostException, MongoException { // 實例化 DBObject p1 = new BasicDBObject(); p1.put("name", "zk00"); insert(p1, "person"); } /** * 測試添加一條記錄 * * @throws UnknownHostException * @throws MongoException */ @Test public void test3() throws UnknownHostException, MongoException { List<DBObject> dbObjects = new ArrayList<DBObject>(); DBObject zs = new BasicDBObject("name", "zhaosi"); DBObject zq = new BasicDBObject("name", "zhuqi"); dbObjects.add(zs); dbObjects.add(zq); insertBatch(dbObjects, "person"); } /** * 測試 根據id 刪除一條記錄 * * @throws UnknownHostException * @throws MongoException */ @Test public void test4() throws UnknownHostException, MongoException { deleteById("553a5accb9d133bcf4056a40", "person"); } /** * 測試 根據條件 刪除 * * @throws UnknownHostException * @throws MongoException */ @Test public void test5() throws UnknownHostException, MongoException { DBObject obj = new BasicDBObject(); obj.put("name", "zk00"); int count = deleteByDbs(obj, "person"); System.out.println("刪除數據的條數是: " + count); } /** * 測試 更新操作 * * @throws UnknownHostException * @throws MongoException */ @Test public void test6() throws UnknownHostException, MongoException { DBObject obj = new BasicDBObject(); obj.put("name", "zhaosi"); DBObject update = new BasicDBObject(); update.put("$set", new BasicDBObject("name", "nn1")); update(obj, update, false, true, "person"); } /** * 測試 查詢出person集合中的name * * @throws UnknownHostException * @throws MongoException */ @Test public void test7() throws UnknownHostException, MongoException { DBObject keys = new BasicDBObject(); keys.put("_id", false); keys.put("name", true); DBCursor cursor = find(null, keys, "person"); while (cursor.hasNext()) { DBObject object = cursor.next(); System.out.println(object.get("name")); } } /** * 測試 分頁 * * @throws UnknownHostException * @throws MongoException */ @Test public void test8() throws UnknownHostException, MongoException { DBCursor cursor = find(null, null, 0, 6, "person"); while (cursor.hasNext()) { DBObject object = cursor.next(); System.out.print("name=" + object.get("name") + " "); System.out.println("_id=" + object.get("_id")); } } /** * 創建一個數據庫集合 * * @param collName * 集合名稱 * @param db * 數據庫實例 */ public void createCollection(String collName) { DBObject dbs = new BasicDBObject(); db.createCollection("person", dbs); } /** * 為相應的集合添加數據 * * @param dbs * @param collName */ public void insert(DBObject dbs, String collName) { // 1.得到集合 DBCollection coll = db.getCollection(collName); // 2.插入操作 coll.insert(dbs); } /** * 為集合批量插入數據 * * @param dbses * @param collName */ public void insertBatch(List<DBObject> dbses, String collName) { DBCollection coll = db.getCollection(collName); coll.insert(dbses); } /** * 根據id刪除數據 * * @param id * @param collName * @return 返回影響的數據條數 */ public int deleteById(String id, String collName) { DBCollection coll = db.getCollection(collName); DBObject dbs = new BasicDBObject("_id", new ObjectId(id)); int count = coll.remove(dbs).getN(); return count; } /** * 根據條件刪除數據 * * @param id * @param collName * @return 返回影響的數據條數 */ public int deleteByDbs(DBObject dbs, String collName) { DBCollection coll = db.getCollection(collName); int count = coll.remove(dbs).getN(); return count; } /** * 更新數據 * * @param find * 查詢器 * @param update * 更新器 * @param upsert * 更新或插入 * @param multi * 是否批量更新 * @param collName * 集合名稱 * @return 返回影響的數據條數 */ public int update(DBObject find, DBObject update, boolean upsert, boolean multi, String collName) { DBCollection coll = db.getCollection(collName); int count = coll.update(find, update, upsert, multi).getN(); return count; } /** * 查詢(分頁) * @param ref * @param keys * @param start * @param limit * @return */ public DBCursor find(DBObject ref, DBObject keys, int start, int limit, String collName) { DBCursor cur = find(ref, keys, collName); return cur.limit(limit).skip(start); } /** * 查詢 (不分頁) * @param ref * @param keys * @param start * @param limit * @param collName * @return */ public DBCursor find(DBObject ref, DBObject keys, String collName) { DBCollection coll = db.getCollection(collName); DBCursor cur = coll.find(ref, keys); return cur; } }
注意:connection.close();最后別忘記調用,另外 做過java的同學都知道連接池 以及釋放回收鏈接問題。mongodb自動內部實現了連接池。不需要再考慮該問題,也可以自行實現設置。
本文由用戶 efx4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!