MongoDB API實現增刪改查


一,代碼實現

 1 import com.mongodb.DBCollection;
 2 import com.mongodb.MongoClient;
 3 import java.net.UnknownHostException;
 4 
 5 
 6 public class MongDBUtile {
 7     /**
 8      * MongoClient是線程安全的
 9      * Mongo是非線程安全的
10      * 目前mongodb API中已經建議用MongoClient替代Mongo
11      */
12     private MongoClient mongoClient = null;
13 
14 
15     /**
16      *   指定數據庫的指定集合
17      * @param dbName
18      * @param collectionName
19      * @return
20      */
21     public DBCollection getDBCollection(String dbName, String collectionName) {
22         return mongoClient.getDB(dbName).getCollection(collectionName);
23     }
24 
25     /**
26      * 單例模式獲取MongoClient
27      */
28     private static MongDBUtile getInstance = null;
29 
30     public static MongDBUtile getInstance(String host, int port){
31         getInstance = new MongDBUtile(host,port);
32         return getInstance;
33     }
34 
35     private MongDBUtile(String host, int port){
36         if(mongoClient == null){
37             synchronized (MongDBUtile.class) {
38                 if (mongoClient == null) {
39                     initConn(host, port);
40                 }
41             }
42         }
43     }
44 
45     /**
46      * 初始化MongoClient
47      * @param host
48      * @param port
49      */
50     private void initConn(String host, int port) {
51         try {
52             mongoClient = new MongoClient(host,port);
53         } catch (UnknownHostException e) {
54             e.printStackTrace();
55         }
56     }
57 
58 }

1.1 插入

 1 /**
 2      * 新增 一條記錄
 3      * @param dbCollection
 4      */
 5     public static void addOne(DBCollection dbCollection){
 6         DBObject documents = new BasicDBObject("name","張三").append("age", 45).append("sex", "男").append("address",
 7                 new BasicDBObject("postCode", 100000).append("street", "深南大道888號").append("city", "深圳"));
 8         dbCollection.insert(documents);
 9     }
10 
11     /**
12      * 批量新增記錄:可以使用各種數據類型
13      * @param dbCollection
14      */
15     public static void addList(DBCollection dbCollection){
16         List<DBObject> listdbo= new ArrayList<>();
17         DBObject dbObject = new BasicDBObject();
18         dbObject.put("name", "老王");
19         // 可以直接保存List類型
20         List<String> list = new ArrayList<>();
21         list.add("老王1");
22         list.add("老王2");
23         dbObject.put("remark", list);
24         listdbo.add(dbObject);
25 
26         dbObject = new BasicDBObject();
27         // 可以直接保存map
28         Map<String,List<String>> map = new HashMap<>();
29         List<String> hobbys = new ArrayList<>();
30         hobbys.add("吃飯");
31         hobbys.add("睡覺");
32         hobbys.add("吃雞");
33         map.put("愛好", hobbys);
34         dbObject.put("hobby", map);
35         listdbo.add(dbObject);
36 
37         dbObject = new BasicDBObject();
38         dbObject.put("name", "老張");
39         dbObject.put("age", 52);
40         dbObject.put("job", "快遞員");
41         dbObject.put("remark", new BasicDBObject("address", "廣東省深圳市").append("street", "深南大道888號"));
42         listdbo.add(dbObject);
43 
44         dbCollection.insert(listdbo);
45     }
46 
47     /**
48      * json轉對象后執行新增
49      * @param dbCollection
50      */
51     public static void addByJson(DBCollection dbCollection){
52         String json = "{ \"name\" : \"王五\" , \"age\" : 66 , \"job\" : \"快遞員\" , \"remark\" : { \"address\" : \"廣東省深圳市\" , \"street\" : \"深南大道888號\"}}";
53         DBObject dbObject = (DBObject)JSON.parse(json);
54         dbCollection.insert(dbObject);
55     }

方法調用以及運行結果

1 //連接mongoDB,並打開數據庫
2 DBCollection dbCollection = MongDBUtile.getInstance(HOST,PORT).getDBCollection(DB_NAME, DBCOLLECTION_NAME);
3 
4 addOne(dbCollection);
5 addList(dbCollection);
6 addByJson(dbCollection);

 

1.2 查詢

 1 /**
 2      * 條件查詢:name 為 張三
 3      * @param dbCollection
 4      */
 5     public static void queryOne(DBCollection dbCollection){
 6         DBObject result = dbCollection.findOne(new BasicDBObject("name","張三"));
 7         System.out.println(result);
 8     }
 9 
10     /**
11      * 分頁查詢:跳過前2條后的3條數據
12      * @param dbCollection
13      */
14     public static void queryPage(DBCollection dbCollection){
15         DBCursor cursor = dbCollection.find().skip(2).limit(3);
16         //遍歷輸出結果
17         while (cursor.hasNext()) {
18             System.out.println(cursor.next());
19         }
20     }
21     /**
22      * 范圍查詢:第3條 到 第5條 之間的記錄
23      * @param dbCollection
24      * 大於 - $gt
25      * 小於 - $lt
26      * 大於等於 - $gte
27      * 小於等於 - $lte
28      */
29     public static void queryRange(DBCollection dbCollection) {
30         DBObject range = new BasicDBObject();
31         range.put("$gte", 28);
32         range.put("$lte", 32);
33 
34         DBObject dbObject = new BasicDBObject();
35         dbObject.put("age", range);
36         DBCursor cursor = dbCollection.find(dbObject);
37         while (cursor.hasNext()) {
38             System.out.println(cursor.next());
39         }
40     }
41 
42     /**'
43      *查詢出全部的 記錄
44      * @param dbCollection
45      */
46     public static void queryList(DBCollection dbCollection) {
47         DBCursor cursor = dbCollection.find();
48         while(cursor.hasNext()){
49             System.out.println(cursor.next());
50         }
51     }

方法調用以及運行結果

 1   //連接mongoDB,並打開數據庫
 2         DBCollection dbCollection = MongDBUtile.getInstance(HOST,PORT).getDBCollection(DB_NAME, DBCOLLECTION_NAME);
 3         System.out.println("條件查詢:name 為 張三");
 4         queryOne(dbCollection);
 5         System.out.println("跳過前2條后的3條數據");
 6         queryPage(dbCollection);
 7         System.out.println("age在50到52之間的記錄");
 8         queryRange(dbCollection);
 9         System.out.println("查詢出全部的記錄");
10         queryList(dbCollection);
11 
12 
13 *******************************運行結果*******************************
14 
15 條件查詢:name 為 張三
16 { "_id" : { "$oid" : "5a50b3d6e6fbe9e658745f04"} , "name" : "張三" , "age" : 45 , "sex" : "男" , "address" : { "postCode" : 100000 , "street" : "深南大道888號" , "city" : "深圳"}}
17 跳過前2條后的3條數據
18 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d5"} , "hobby" : { "愛好" : [ "吃飯" , "睡覺" , "吃雞"]}}
19 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老張" , "age" : 52 , "job" : "快遞員" , "remark" : { "address" : "廣東省深圳市" , "street" : "深南大道888號"}}
20 age在50到52之間的記錄
21 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老張" , "age" : 52 , "job" : "快遞員" , "remark" : { "address" : "廣東省深圳市" , "street" : "深南大道888號"}}
22 查詢出全部的記錄
23 { "_id" : { "$oid" : "5a50b3d6e6fbe9e658745f04"} , "name" : "張三" , "age" : 45 , "sex" : "男" , "address" : { "postCode" : 100000 , "street" : "深南大道888號" , "city" : "深圳"}}
24 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d4"} , "name" : "老王" , "remark" : [ "老王1" , "老王2"]}
25 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d5"} , "hobby" : { "愛好" : [ "吃飯" , "睡覺" , "吃雞"]}}
26 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老張" , "age" : 52 , "job" : "快遞員" , "remark" : { "address" : "廣東省深圳市" , "street" : "深南大道888號"}}

 1.3 更新

 /**
     * 修改指定記錄
     * @param dbCollection
     */
    public static void updateOne(DBCollection dbCollection) {
        // 先根據id查詢將這條記錄查詢出來
        DBObject qryResult = dbCollection.findOne(new ObjectId("5a50b768e6fbda046406b255"));
        // 修改指定的值
        qryResult.put("age", 55);

        DBObject oldDBObject = new BasicDBObject();
        oldDBObject.put("_id", new ObjectId("5a50b768e6fbda046406b255"));
        dbCollection.update(oldDBObject, qryResult);
    }

    /**
     * 修改多條記錄
     * @param dbCollection
     */
    public static void updateMulti(DBCollection dbCollection) {
        DBObject newDBObject = new BasicDBObject();
        newDBObject.put("name", "張三");
        newDBObject.put("address", "廣東深圳");
        newDBObject.put("remark", "張三是一個man");

        DBObject oldDBObject = new BasicDBObject();
        oldDBObject.put("name", "張三");
        // 需要加上這個
        DBObject upsertValue = new BasicDBObject("$set", newDBObject);
        // 后面的兩個參數:1.若所更新的數據沒有,則插入 ; 2、同時更新多個符合條件的文檔(collection)
        dbCollection.update(oldDBObject, upsertValue, true, true);
    }

方法調用以及運行結果

1.4 刪除

 1     /**
 2      *刪除第一個
 3      * @param dbCollection
 4      */
 5     public static void deleteFirst(DBCollection dbCollection){
 6         DBObject dbObject = dbCollection.findOne();
 7         dbCollection.remove(dbObject);
 8     }
 9 
10     /**
11      * 刪除指定的一條記錄
12      * @param dbCollection
13      */
14     public static void deleteOne(DBCollection dbCollection){
15         DBObject dbObject = new BasicDBObject();
16         dbObject.put("_id", new ObjectId("5a50b41ae6fb51a28bf2b2d4"));
17         dbCollection.remove(dbObject);
18     }
19 
20     /**
21      * 刪除多條記錄
22      * 例如:select * from tb where name in('12','34')
23      * @param dbCollection25      */
26     public static void deleteByIn(DBCollection dbCollection) {
27         List<String> list = new ArrayList<String>();
28         list.add("老張");
29         list.add("老王");
30         list.add("張三");
31         DBObject dbObject = new BasicDBObject("$in", list);
32 
33         DBObject delObject = new BasicDBObject();
34         delObject.put("name", dbObject);
35         dbCollection.remove(delObject);
36     }
37 
38     /**
39      * 刪除全部的記錄
40      * @param dbCollection
41      */
42     public static void deleteAll(DBCollection dbCollection){
43         DBCursor cursor = dbCollection.find();
44         while(cursor.hasNext()){
45             dbCollection.remove(cursor.next());
46         }
47     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM