MongoDB——Java操作(增删改查)

Java操作MongoDB,下面是一个完整的例子。本实例需导入mongo-2.5.3.jar

Java代码 收藏代码
  1. importjava.net.UnknownHostException;
  2. importjava.util.Iterator;
  3. importjava.util.Set;
  4. importcom.mongodb.BasicDBObject;
  5. importcom.mongodb.DB;
  6. importcom.mongodb.DBCollection;
  7. importcom.mongodb.DBCursor;
  8. importcom.mongodb.DBObject;
  9. importcom.mongodb.Mongo;
  10. importcom.mongodb.MongoException;
  11. publicclassMongoMain{
  12. staticDBdb=null;
  13. staticDBCollectioncoll=null;
  14. static{
  15. Mongom=null;
  16. try{
  17. //m=newMongo();//默认本地
  18. //m=newMongo("127.0.0.1");//默认端口
  19. m=newMongo("127.0.0.1",27017);
  20. }catch(UnknownHostExceptione){
  21. e.printStackTrace();
  22. }catch(MongoExceptione){
  23. e.printStackTrace();
  24. }
  25. //获取名为test的数据库,不存在的情况下创建
  26. db=m.getDB("test");
  27. //登录数据库(用户名:test,密码:test)
  28. booleanauth=db.authenticate("test","test".toCharArray());
  29. if(auth){
  30. //只有admin中的用户才有此权限(showdbs)
  31. //获取所有数据库,不显示无collection的db
  32. //System.out.println("所有数据库名:"+m.getDatabaseNames());
  33. //获取名为user的collection(相当于表),不存在的情况下创建
  34. coll=db.getCollection("user");
  35. }else{
  36. System.out.println("登录失败!");
  37. }
  38. }
  39. publicstaticvoidmain(String[]args){
  40. MongoMaintest=newMongoMain();
  41. if(coll!=null){
  42. test.saveData();
  43. test.searchData();
  44. test.updateData();
  45. test.deleteData();
  46. }
  47. }
  48. /**
  49. *保存数据
  50. */
  51. publicvoidsaveData(){
  52. //录入学生1的信息
  53. BasicDBObjectstu1=newBasicDBObject();
  54. stu1.put("name","jack");
  55. stu1.put("age","25");
  56. BasicDBObjectsight1=newBasicDBObject();
  57. sight1.put("left",1.5);
  58. sight1.put("right",1.2);
  59. stu1.put("sight",sight1);
  60. //录入学生2的信息
  61. BasicDBObjectstu2=newBasicDBObject();
  62. stu2.put("name","lucy");
  63. stu2.put("age","22");
  64. BasicDBObjectsight2=newBasicDBObject();
  65. sight2.put("left",1.0);
  66. sight2.put("right",1.3);
  67. stu2.put("sight",sight2);
  68. //注意:不能直接对sight赋值{left:1.0,right:1.3}
  69. coll.insert(stu1);
  70. coll.insert(stu2);
  71. }
  72. /**
  73. *查询数据
  74. */
  75. publicvoidsearchData(){
  76. System.out.println("=======================");
  77. //showcollections
  78. //获取数据库下所有的collection,不显示无数据的collection
  79. Set<String>colls=db.getCollectionNames();
  80. showData(colls);
  81. System.out.println("=======================");
  82. //查询coll中全部记录
  83. DBCursorite=coll.find();
  84. showData(ite);
  85. System.out.println("=======================");
  86. //获取第一条记录
  87. DBObjecto=coll.findOne();
  88. System.out.println(o);
  89. System.out.println("=======================");
  90. //统计colletion的数据条数
  91. System.out.println(coll.getCount());
  92. System.out.println("=======================");
  93. //查询name为jack的对象
  94. BasicDBObjectquery=newBasicDBObject();
  95. query.put("name","jack");
  96. DBCursorit=coll.find(query);
  97. showData(it);
  98. System.out.println("=======================");
  99. //查询age小于30,age不等于20的对象
  100. BasicDBObjectquery2=newBasicDBObject();
  101. query2.put("age",newBasicDBObject("$lt",30));
  102. query2.put("age",newBasicDBObject("$ne",20));
  103. DBCursorit2=coll.find(query2);
  104. showData(it2);
  105. }
  106. /**
  107. *修改数据
  108. */
  109. publicvoidupdateData(){
  110. BasicDBObjectquery=newBasicDBObject();
  111. query.put("name","lucy");
  112. //这里的new_info对象一定要是find出的而不是new的,否则多字段的情况下就会丢失其它字段信息
  113. DBObjectnew_info=coll.findOne(query);
  114. //方法一(缺点,必须把2个值都put进去)
  115. BasicDBObjectsight=newBasicDBObject();
  116. sight.put("left",1.3);
  117. sight.put("right",1.3);
  118. new_info.put("sight",sight);
  119. //方法二(优点,只需设置要修改的字段的值)
  120. DBObjectobj=(DBObject)new_info.get("sight");
  121. obj.put("right",1.5);
  122. coll.update(query,new_info);
  123. }
  124. /**
  125. *删除数据
  126. */
  127. publicvoiddeleteData(){
  128. BasicDBObjectdata=newBasicDBObject();
  129. //删除名称为lucy的记录
  130. data.put("name","lucy");
  131. //传入[空实例]删除所有
  132. coll.remove(data);
  133. }
  134. /**
  135. *遍历显示结果
  136. *@paramresult
  137. */
  138. @SuppressWarnings("rawtypes")
  139. publicvoidshowData(Iterableresult){
  140. Iteratorit=result.iterator();
  141. while(it.hasNext())
  142. {
  143. System.out.println(it.next());
  144. }
  145. }
  146. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值