java mongodb 增删改查_6. MongoDB——Java操作(增删改查)

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 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值