转自: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     }

 

posted on 2017-11-14 09:56  Sharpest  阅读(2679)  评论(0编辑  收藏  举报