MongoDB(二)

Wesley13
• 阅读 429

一、下载jar包

http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

二、代码实现

  1. package com.xbq.mongodb;

  2. import java.util.ArrayList;

  3. import java.util.HashMap;

  4. import java.util.List;

  5. import java.util.Map;

  6. import org.bson.types.ObjectId;

  7. import com.mongodb.BasicDBObject;

  8. import com.mongodb.DB;

  9. import com.mongodb.DBCollection;

  10. import com.mongodb.DBCursor;

  11. import com.mongodb.DBObject;

  12. import com.mongodb.Mongo;

  13. import com.mongodb.util.JSON;

  14. /**

  15. * @ClassName: MongoDBTest

  16. * @Description: TODO MongoDB 增删改查 操作,包含批量操作

  17. * @author xbq

  18. * @version 1.0

  19. * @date 2017-4-5 上午11:50:06

  20. */

  21. public class MongoDBTest {

  22. private static final String HOST = "192.168.242.129";

  23. private static final int PORT = 27017;

  24. private static final String DB_NAME = "testDB";

  25. private static Mongo mongo;

  26. private static DB db;

  27. static {

  28. // 连接到MongoDB

  29. mongo = new Mongo(HOST, PORT);

  30. // 打开数据库 testDB

  31. db = mongo.getDB(DB_NAME);

  32. }

  33. public static void main(String[] args) {

  34. // 获取集合 xbqTable,若该集合不存在,mongoDB将自动创建该集合

  35. DBCollection dbCollection = db.getCollection("testTable");

  36. // 查询该数据库所有的集合名

  37. for(String name : mongo.getDatabaseNames()){

  38. System.out.println(name);

  39. }

  40. // addOne(dbCollection);

  41. // addList(dbCollection);

  42. // addByJson(dbCollection);

  43. // deleteOne(dbCollection);

  44. // deleteByIn(dbCollection);

  45. // deleteAll(dbCollection);

  46. // updateOne(dbCollection);

  47. // updateMulti(dbCollection);

  48. // queryOne(dbCollection);

  49. // queryPage(dbCollection);

  50. // queryRange(dbCollection);

  51. queryList(dbCollection);

  52. }

  53. // ====================================查询开始==============================================

  54. /**

  55. * @Title: queryOne

  56. * @Description: TODO 查询 name为 张三的 一条记录

  57. * @param dbCollection

  58. * @return: void

  59. */

  60. public static void queryOne(DBCollection dbCollection){

  61. DBObject documents = new BasicDBObject("name","张三");

  62. DBObject result = dbCollection.findOne(documents);

  63. System.out.println(result);

  64. }

  65. /**

  66. * @Title: queryPage

  67. * @Description: TODO 分页查询 , 查询 跳过前2条 后的 3条 数据

  68. * @param dbCollection

  69. * @return: void

  70. */

  71. public static void queryPage(DBCollection dbCollection){

  72. DBCursor cursor = dbCollection.find().skip(2).limit(3);

  73. while (cursor.hasNext()) {

  74. System.out.println(cursor.next());

  75. }

  76. }

  77. /**

  78. * @Title: queryRange

  79. * @Description: TODO 范围查询,查询 第3条 到 第5条 之间的记录

  80. * @param dbCollection

  81. * @return: void

  82. */

  83. public static void queryRange(DBCollection dbCollection) {

  84. DBObject range = new BasicDBObject();

  85. range.put("$gte", 50);

  86. range.put("$lte", 52);

  87. DBObject dbObject = new BasicDBObject();

  88. dbObject.put("age", range);

  89. DBCursor cursor = dbCollection.find(dbObject);

  90. while (cursor.hasNext()) {

  91. System.out.println(cursor.next());

  92. }

  93. }

  94. /**'

  95. * @Title: queryList

  96. * @Description: TODO 查询出全部的 记录

  97. * @param dbCollection

  98. * @return: void

  99. */

  100. public static void queryList(DBCollection dbCollection) {

  101. DBCursor cursor = dbCollection.find();

  102. DBObject dbObject = null;

  103. while(cursor.hasNext()){

  104. dbObject = cursor.next();

  105. System.out.println(dbObject);

  106. }

  107. }

  108. // ====================================增加开始==============================================

  109. /**

  110. * @Title: addOne

  111. * @Description: TODO 新增 一条记录

  112. * @param dbCollection

  113. * @return: void

  114. */

  115. public static void addOne(DBCollection dbCollection){

  116. DBObject documents = new BasicDBObject("name","张三").append("age", 45).append("sex", "男").append("address",

  117. new BasicDBObject("postCode", 100000).append("street", "深南大道888号").append("city", "深圳"));

  118. dbCollection.insert(documents);

  119. }

  120. /**

  121. * @Title: addList

  122. * @Description: TODO 批量新增 记录 , 增加的记录 中 可以使用各种数据类型

  123. * @param dbCollection

  124. * @return: void

  125. */

  126. public static void addList(DBCollection dbCollection){

  127. List<DBObject> listdbo= new ArrayList<DBObject>();

  128. DBObject dbObject = new BasicDBObject();

  129. dbObject.put("name", "老王");

  130. // 可以直接保存List类型

  131. List<String> list = new ArrayList<String>();

  132. list.add("非隔壁老王");

  133. dbObject.put("remark", list);

  134. listdbo.add(dbObject);

  135. dbObject = new BasicDBObject();

  136. // 可以直接保存map

  137. Map<String,List<String>> map = new HashMap<String,List<String>>();

  138. List<String> hobbys = new ArrayList<String>();

  139. hobbys.add("看花");

  140. hobbys.add("采花");

  141. map.put("爱好", hobbys);

  142. dbObject.put("hobby", map);

  143. listdbo.add(dbObject);

  144. dbObject = new BasicDBObject();

  145. dbObject.put("name", "老张");

  146. dbObject.put("age", 52);

  147. dbObject.put("job", "看守老王");

  148. dbObject.put("remark", new BasicDBObject("address", "广东省深圳市").append("street", "深南大道888号"));

  149. listdbo.add(dbObject);

  150. dbCollection.insert(listdbo);

  151. }

  152. /**

  153. * @Title: addByJson

  154. * @Description: TODO json转对象后 ,执行新增

  155. * @param dbCollection

  156. * @return: void

  157. */

  158. public static void addByJson(DBCollection dbCollection){

  159. String json = "{ \"name\" : \"王五\" , \"age\" : 66 , \"job\" : \"看守老王\" , \"remark\" : { \"address\" : \"广东省深圳市\" , \"street\" : \"深南大道888号\"}}";

  160. DBObject dbObject = (DBObject) JSON.parse(json);

  161. dbCollection.insert(dbObject);

  162. }

  163. // ====================================修改开始==============================================

  164. /**

  165. * @Title: update

  166. * @Description: TODO 修改指定记录

  167. * @param dbCollection

  168. * @return: void

  169. */

  170. public static void updateOne(DBCollection dbCollection) {

  171. // 先根据id查询将 这条 记录查询出来

  172. DBObject qryResult = dbCollection.findOne(new ObjectId("58e4a11c6c166304f0635958"));

  173. // 修改指定的值

  174. qryResult.put("age", 55);

  175. DBObject olddbObject = new BasicDBObject();

  176. olddbObject.put("_id", new ObjectId("58e4a11c6c166304f0635958"));

  177. dbCollection.update(olddbObject, qryResult);

  178. }

  179. /**

  180. * @Title: updateMulti

  181. * @Description: TODO 修改 多条记录

  182. * @param dbCollection

  183. * @return: void

  184. */

  185. public static void updateMulti(DBCollection dbCollection) {

  186. DBObject newdbObject = new BasicDBObject();

  187. newdbObject.put("name", "张三");

  188. newdbObject.put("address", "广东深圳");

  189. newdbObject.put("remark", "张三是一个NB的Coder");

  190. DBObject olddbObject = new BasicDBObject();

  191. olddbObject.put("name", "张三");

  192. // 需要加上这个

  193. DBObject upsertValue = new BasicDBObject("$set", newdbObject);

  194. // 后面的两个参数:1.若所更新的数据没有,则插入 ; 2、同时更新多个符合条件的文档(collection)

  195. dbCollection.update(olddbObject, upsertValue, true, true);

  196. }

  197. // ====================================删除开始==============================================

  198. /**

  199. * @Title: deleteFirst

  200. * @Description: TODO 删除第一个

  201. * @param

  202. * @return: void

  203. */

  204. public static void deleteFirst(DBCollection dbCollection){

  205. DBObject dbObject = dbCollection.findOne();

  206. dbCollection.remove(dbObject);

  207. }

  208. /**

  209. * @Title: deleteOne

  210. * @Description: TODO 删除指定的一条记录

  211. * @param dbCollection

  212. * @return: void

  213. */

  214. public static void deleteOne(DBCollection dbCollection){

  215. DBObject dbObject = new BasicDBObject();

  216. dbObject.put("_id", new ObjectId("58e49c2d6c166309e0d50484"));

  217. dbCollection.remove(dbObject);

  218. }

  219. /**

  220. * @Title: deleteByIn

  221. * @Description: TODO 删除多条记录 例如:select * from tb where name in('12','34')

  222. * @param dbCollection

  223. * @return: void

  224. */

  225. public static void deleteByIn(DBCollection dbCollection) {

  226. List<String> list = new ArrayList<String>();

  227. list.add("老张");

  228. list.add("老王");

  229. list.add("张三");

  230. DBObject dbObject = new BasicDBObject("$in", list);

  231. DBObject delObject = new BasicDBObject();

  232. delObject.put("name", dbObject);

  233. dbCollection.remove(delObject);

  234. }

  235. /**

  236. * @Title: deleteAll

  237. * @Description: TODO 删除全部的记录

  238. * @param dbCollection

  239. * @return: void

  240. */

  241. public static void deleteAll(DBCollection dbCollection){

  242. DBCursor cursor = dbCollection.find();

  243. while(cursor.hasNext()){

  244. dbCollection.remove(cursor.next());

  245. }

  246. }

  247. }

三、源码下载

点击阅读原文下载源码哦~

本文分享自微信公众号 - 码咖(hello-world-IT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
AndroidStudio封装SDK的那些事
<divclass"markdown\_views"<!flowchart箭头图标勿删<svgxmlns"http://www.w3.org/2000/svg"style"display:none;"<pathstrokelinecap"round"d"M5,00,2.55,5z"id"raphael
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这