6. MongoDB——Java操作(增刪改查)


轉自:https://blog.csdn.net/kai402458953/article/details/79626148

 

  1 import java.net.UnknownHostException;  
  2     import java.util.Iterator;  
  3     import java.util.Set;  
  4       
  5     import com.mongodb.BasicDBObject;  
  6     import com.mongodb.DB;  
  7     import com.mongodb.DBCollection;  
  8     import com.mongodb.DBCursor;  
  9     import com.mongodb.DBObject;  
 10     import com.mongodb.Mongo;  
 11     import com.mongodb.MongoException;  
 12       
 13     public class MongoMain {  
 14           
 15         static DB db = null;  
 16         static DBCollection coll = null;  
 17           
 18         static {  
 19              Mongo m = null;  
 20             try {  
 21                 //m = new Mongo();//默認本地  
 22                 //m = new Mongo("127.0.0.1");//默認端口  
 23                 m = new Mongo("127.0.0.1",27017);  
 24             } catch (UnknownHostException e) {  
 25                 e.printStackTrace();  
 26             } catch (MongoException e) {  
 27                 e.printStackTrace();  
 28             }  
 29               
 30             //獲取名為 test 的數據庫,不存在的情況下創建  
 31             db = m.getDB("test");  
 32               
 33             //登錄數據庫(用戶名:test,密碼:test)  
 34             boolean auth = db.authenticate("test", "test".toCharArray());  
 35             if(auth){  
 36                 //只有admin中的用戶才有此權限(show dbs)  
 37                 //獲取所有數據庫,不顯示無collection的db  
 38                 //System.out.println("所有數據庫名:"+m.getDatabaseNames());  
 39                   
 40                 //獲取名為 user 的collection(相當於表),不存在的情況下創建  
 41                 coll = db.getCollection("user");  
 42             }else{  
 43                 System.out.println("登錄失敗!");  
 44             }  
 45         }  
 46           
 47         public static void main(String[] args) {  
 48             MongoMain test = new MongoMain();  
 49             if(coll!=null){  
 50                 test.saveData();  
 51                 test.searchData();  
 52                 test.updateData();  
 53                 test.deleteData();  
 54             }  
 55         }  
 56       
 57         /** 
 58          * 保存數據 
 59          */  
 60         public void saveData(){  
 61             //錄入學生1的信息  
 62             BasicDBObject stu1 = new BasicDBObject();  
 63             stu1.put("name", "jack");  
 64             stu1.put("age", "25");  
 65             BasicDBObject sight1 = new BasicDBObject();  
 66             sight1.put("left", 1.5);  
 67             sight1.put("right", 1.2);  
 68             stu1.put("sight", sight1);  
 69               
 70             //錄入學生2的信息  
 71             BasicDBObject stu2 = new BasicDBObject();  
 72             stu2.put("name", "lucy");  
 73             stu2.put("age", "22");  
 74             BasicDBObject sight2 = new BasicDBObject();  
 75             sight2.put("left", 1.0);  
 76             sight2.put("right", 1.3);  
 77             stu2.put("sight", sight2);  
 78               
 79             //注意:不能直接對sight賦值{left:1.0,right:1.3}  
 80               
 81             coll.insert(stu1);  
 82             coll.insert(stu2);  
 83         }  
 84           
 85         /** 
 86          * 查詢數據 
 87          */  
 88         public void searchData(){  
 89             System.out.println("=======================");  
 90             //show collections  
 91             //獲取數據庫下所有的collection,不顯示無數據的collection  
 92             Set<String> colls = db.getCollectionNames();  
 93             showData(colls);  
 94               
 95             System.out.println("=======================");  
 96               
 97             //查詢coll中全部記錄   
 98             DBCursor ite = coll.find();    
 99             showData(ite);  
100               
101             System.out.println("=======================");  
102               
103             //獲取第一條記錄  
104             DBObject o = coll.findOne();  
105             System.out.println(o);  
106               
107             System.out.println("=======================");  
108               
109             //統計colletion的數據條數  
110             System.out.println(coll.getCount());  
111               
112             System.out.println("=======================");  
113               
114             //查詢 name為jack的對象   
115             BasicDBObject query = new BasicDBObject();  
116             query.put("name", "jack");  
117             DBCursor it = coll.find(query);    
118             showData(it);  
119               
120             System.out.println("=======================");  
121               
122             //查詢age小於30,age不等於20的對象   
123             BasicDBObject query2 = new BasicDBObject();  
124             query2.put("age", new BasicDBObject("$lt", 30));  
125             query2.put("age", new BasicDBObject("$ne", 20));  
126             DBCursor it2 = coll.find(query2);    
127             showData(it2);  
128         }  
129           
130         /** 
131          * 修改數據 
132          */  
133         public void updateData(){  
134             BasicDBObject query = new BasicDBObject();  
135             query.put("name", "lucy");  
136             //這里的new_info對象一定要是find出的而不是new的,否則多字段的情況下就會丟失其它字段信息  
137             DBObject new_info = coll.findOne(query);  
138               
139             //方法一(缺點,必須把2個值都put進去)  
140             BasicDBObject sight = new BasicDBObject();  
141             sight.put("left", 1.3);  
142             sight.put("right", 1.3);  
143             new_info.put("sight", sight);  
144               
145             //方法二(優點,只需設置要修改的字段的值)  
146             DBObject obj = (DBObject)new_info.get("sight");  
147             obj.put("right", 1.5);  
148               
149             coll.update(query, new_info);  
150         }  
151           
152         /** 
153          * 刪除數據 
154          */  
155         public void deleteData(){  
156             BasicDBObject data = new BasicDBObject();  
157             //刪除名稱為lucy的記錄  
158             data.put("name", "lucy");  
159             //傳入[空實例]刪除所有  
160             coll.remove(data);  
161         }  
162           
163         /** 
164          * 遍歷顯示結果 
165          * @param result 
166          */  
167         @SuppressWarnings("rawtypes")   
168         public void showData(Iterable result){  
169             Iterator it = result.iterator();   
170             while(it.hasNext())    
171             {    
172                 System.out.println(it.next());    
173             }    
174         }    
175     }

 


免責聲明!

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



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