1 importjava.net.UnknownHostException;2 importjava.util.Iterator;3 importjava.util.Set;4
5 importcom.mongodb.BasicDBObject;6 importcom.mongodb.DB;7 importcom.mongodb.DBCollection;8 importcom.mongodb.DBCursor;9 importcom.mongodb.DBObject;10 importcom.mongodb.Mongo;11 importcom.mongodb.MongoException;12
13 public classMongoMain {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的db38 //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 voidmain(String[] args) {48 MongoMain test = newMongoMain();49 if(coll!=null){50 test.saveData();51 test.searchData();52 test.updateData();53 test.deleteData();54 }55 }56
57 /**
58 * 保存数据59 */
60 public voidsaveData(){61 //录入学生1的信息
62 BasicDBObject stu1 = newBasicDBObject();63 stu1.put("name", "jack");64 stu1.put("age", "25");65 BasicDBObject sight1 = newBasicDBObject();66 sight1.put("left", 1.5);67 sight1.put("right", 1.2);68 stu1.put("sight", sight1);69
70 //录入学生2的信息
71 BasicDBObject stu2 = newBasicDBObject();72 stu2.put("name", "lucy");73 stu2.put("age", "22");74 BasicDBObject sight2 = newBasicDBObject();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 voidsearchData(){89 System.out.println("=======================");90 //show collections91 //获取数据库下所有的collection,不显示无数据的collection
92 Set 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 = newBasicDBObject();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 = newBasicDBObject();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 voidupdateData(){134 BasicDBObject query = newBasicDBObject();135 query.put("name", "lucy");136 //这里的new_info对象一定要是find出的而不是new的,否则多字段的情况下就会丢失其它字段信息
137 DBObject new_info =coll.findOne(query);138
139 //方法一(缺点,必须把2个值都put进去)
140 BasicDBObject sight = newBasicDBObject();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 voiddeleteData(){156 BasicDBObject data = newBasicDBObject();157 //删除名称为lucy的记录
158 data.put("name", "lucy");159 //传入[空实例]删除所有
160 coll.remove(data);161 }162
163 /**
164 * 遍历显示结果165 *@paramresult166 */
167 @SuppressWarnings("rawtypes")168 public voidshowData(Iterable result){169 Iterator it =result.iterator();170 while(it.hasNext())171 {172 System.out.println(it.next());173 }174 }175 }