对于mongoDB而言,学习方式和学习关系型数据库差不太多

開始都是学习怎样insert、find、update、remove,然后就是分页、排序、索引,再接着就是主从复制、副本集、分片等等

最后就是通过它提供的各个驱动(比方Java、PHP、node.js等等)来练习所谓的高级使用方法

另外:相对于Oracle有PLSQL Developer,MySQL有HeidiSQL

mongoDB也不例外,它的图形化工具中有一款叫做mongoVUE的,我用的是1.5.3破解版(不是每15天就得改一次注冊表的那种)

以下演示的就是以Java为例,常见的操作mongoDB API使用方法

  1. package com.jadyer.test;
  2.  
  3. import java.net.UnknownHostException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import org.bson.types.ObjectId;
  8. import org.junit.AfterClass;
  9. import org.junit.BeforeClass;
  10. import org.junit.Test;
  11.  
  12. import com.mongodb.BasicDBObject;
  13. import com.mongodb.DB;
  14. import com.mongodb.DBCollection;
  15. import com.mongodb.DBCursor;
  16. import com.mongodb.DBObject;
  17. import com.mongodb.MongoClient;
  18. import com.mongodb.WriteResult;
  19. import com.mongodb.util.JSON;
  20.  
  21. /**
  22. * mongoDB的Java驱动測试
  23. * @see ----------------------------------------------------------------------------------------
  24. * @see 配置
  25. * @see 1)下载https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.1.zip
  26. * @see 2)解压到本地硬盘D:\Develop\mongoDB\中,并配置环境变量path=D:\Develop\mongoDB\bin
  27. * @see 然后在CMD下运行此命令验证成功安装与否>mongod --version
  28. * @see 3)建立D:\Develop\mongoDBData\目录,用于存放mongoDB数据文件
  29. * @see 4)自己定义bat文件,分别用于启动mongoDB数据库和连接数据库的client
  30. * @see 启动client的mongo_client.bat内容为-->mongo 127.0.0.1:27017/admin
  31. * @see 启动数据库的mongo_db.bat内容为------>mongod --dbpath D:\Develop\mongoDBData --rest
  32. * @see 注:加入[--rest]參数是为了可以訪问mongoDB的Web控制台http://127.0.0.1:28017/
  33. * @see ----------------------------------------------------------------------------------------
  34. * @see Java驱动
  35. * @see 这里要用到mongoDB的Java驱动包,下载地址http://docs.mongodb.org/ecosystem/drivers/java/
  36. * @see ----------------------------------------------------------------------------------------
  37. * @create May 15, 2014 10:17:30 PM
  38. * @author 玄玉<http://blog.csdn.net/jadyer>
  39. */
  40. public class MongoDBTest {
  41. private static MongoClient mongoClient;
  42. private static DB db;
  43.  
  44. /**
  45. * 建立数据库连接
  46. */
  47. @BeforeClass
  48. public static void globalInit(){
  49. try {
  50. //mongoClient = new MongoClient(Arrays.asList(new ServerAddress("127.0.0.1", 27017), new ServerAddress("127.0.0.1", 27018), new ServerAddress("127.0.0.1", 27019)));
  51. mongoClient = new MongoClient("127.0.0.1", 27017);
  52. } catch (UnknownHostException e) {
  53. System.err.println("mongoDB主机地址有误");
  54. }
  55. db = mongoClient.getDB("mydemo");
  56. }
  57.  
  58. /**
  59. * 销毁数据库连接
  60. */
  61. @AfterClass
  62. public static void globalDestroy(){
  63. mongoClient.close();
  64. }
  65.  
  66. /**
  67. * 获取数据库信息
  68. */
  69. @Test
  70. public void getMetaData(){
  71. //查询数据库中全部的集合名称
  72. for(String collectionName : db.getCollectionNames()){
  73. System.out.println("mydemo数据库所拥有的集合为:[" + collectionName + "]");
  74. }
  75. //查询某一集合中的数据
  76. DBCollection collection = db.getCollection("person");
  77. DBCursor cursor = collection.find();
  78. try{
  79. while(cursor.hasNext()){
  80. System.out.println("person集合所拥有的name为--[" + cursor.next().get("name") + "]");
  81. }
  82. }finally{
  83. cursor.close();
  84. }
  85. System.out.println("person集合中的记录数为----------->" + cursor.count());
  86. System.out.println("person集合数据格式化后的JSON串为-->" + JSON.serialize(cursor));
  87. }
  88.  
  89. /**
  90. * 创建一个空的"moive"集合
  91. */
  92. @Test
  93. public void createCollection(){
  94. db.createCollection("movie", new BasicDBObject());
  95. }
  96.  
  97. /**
  98. * 为"moive"集合加入文档
  99. */
  100. @Test
  101. public void insertDocument(){
  102. DBObject doc = new BasicDBObject();
  103. doc.put("name", "24");
  104. doc.put("season", "ninth");
  105. doc.put("score", 88);
  106. List<String> actorList = new ArrayList<String>();
  107. actorList.add("Jack Bauer");
  108. actorList.add("Counter Terrorist Unit");
  109. doc.put("actor", actorList);
  110. db.getCollection("movie").insert(doc);
  111. }
  112.  
  113. /**
  114. * 批量插入文档
  115. */
  116. @Test
  117. public void insertBatchDocument(){
  118. List<DBObject> docList = new ArrayList<DBObject>();
  119. DBObject doc11 = new BasicDBObject("name", "Prison Break").append("season", "fourth").append("score", 99);
  120. DBObject doc22 = new BasicDBObject("name", "Game of Thrones").append("season", "third").append("score", 92);
  121. docList.add(doc11);
  122. docList.add(doc22);
  123. db.getCollection("movie").insert(docList);
  124. }
  125.  
  126. /**
  127. * 依据_id删除数据
  128. */
  129. @Test
  130. public void deleteById(){
  131. WriteResult result = db.getCollection("movie").remove(new BasicDBObject("_id", new ObjectId("5374c6dc5030e0ea4dac8907")));
  132. System.out.println("本次操作影响的记录条数为:" + result.getN());
  133. }
  134.  
  135. /**
  136. * 依据条件删除数据
  137. */
  138. @Test
  139. public void deleteByData(){
  140. DBObject doc = new BasicDBObject();
  141. doc.put("name", "Prison Break");
  142. WriteResult result = db.getCollection("movie").remove(doc);
  143. System.out.println("本次操作影响的记录条数为:" + result.getN());
  144. }
  145.  
  146. /**
  147. * 更新数据
  148. * @see 添加email属性
  149. */
  150. @Test
  151. public void update(){
  152. DBObject doc = new BasicDBObject();
  153. doc.put("$set", new BasicDBObject("email", "Jadyer@yeah.net"));
  154. WriteResult result = db.getCollection("movie").update(new BasicDBObject(), doc, false, true);
  155. System.out.println("本次操作影响的记录条数为:" + result.getN());
  156. }
  157.  
  158. /**
  159. * 查询"moive"集合中的key
  160. */
  161. @Test
  162. public void getKey(){
  163. DBObject keys = new BasicDBObject();
  164. keys.put("_id", false);
  165. keys.put("name", true);
  166. //keys.put("score", true);
  167. //第一个參数表示查询条件,第二个參数表示返回的详细key
  168. DBCursor cursor = db.getCollection("movie").find(null, keys);
  169. try{
  170. while(cursor.hasNext()){
  171. DBObject object = cursor.next();
  172. System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
  173. }
  174. }finally{
  175. cursor.close();
  176. }
  177. }
  178.  
  179. /**
  180. * 查询"moive"集合中分数不超过95的key
  181. */
  182. @Test
  183. public void getKeyUseScore(){
  184. DBObject ref = new BasicDBObject();
  185. ref.put("score", new BasicDBObject("$lte", 95));
  186. DBCursor cursor = db.getCollection("movie").find(ref, null);
  187. try{
  188. while(cursor.hasNext()){
  189. DBObject object = cursor.next();
  190. System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
  191. }
  192. }finally{
  193. cursor.close();
  194. }
  195. }
  196.  
  197. /**
  198. * 分页查询
  199. */
  200. @Test
  201. public void limitSkip(){
  202. DBCursor cursor = db.getCollection("movie").find(null, null);
  203. cursor.limit(0).skip(1);
  204. try{
  205. while(cursor.hasNext()){
  206. DBObject object = cursor.next();
  207. System.out.println("查询到的name=" + object.get("name"));
  208. }
  209. }finally{
  210. cursor.close();
  211. }
  212. }
  213. }

Java操作mongoDB2.6的常见API使用方法的更多相关文章

  1. 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用

    java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...

  2. java操作redis。jedis使用api

    package com.wujintao.redis; import java.util.Date; import java.util.HashMap; import java.util.Iterat ...

  3. Java入门(4)——常见的String方法

    考虑到API当中的解释,新手可能有点看不懂(我刚开始就是不太看得懂).最好的学习方法当然是是自己一个一个去试一遍,然后就可以加深印象. 然后, 这是我当初学习的时候用自己的大白话做的笔记.现在查阅的话 ...

  4. Java操作Kafka执行不成功的解决方法,Kafka Broker Advertised.Listeners属性的设置

    创建Spring Boot项目继承Kafka,向Kafka发送消息始终不成功.具体项目配置如下: <?xml version="1.0" encoding="UTF ...

  5. Java Web项目开发中常见路径获取方法

    项目绝对路径 String serverPath = request.getSession().getServletContext().getRealPath("/"); E:\J ...

  6. java操作redis之jedis篇

    首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...

  7. JAVA操作Excel时文字自适应单元格的宽度设置方法

    使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...

  8. 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解

    本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...

  9. rocketmq(三 java操作rocket API, rocketmq 幂等性)

    JAVA操作rocketmq: 1.导入rocketmq所需要的依赖: <dependency> <groupId>com.alibaba.rocketmq</group ...

随机推荐

  1. win8 VS2010 配制OpenGL

    glut下载地址: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut.h  ---> C:\Progr ...

  2. Linux软件大全

    https://www.linux-apps.com/browse/cat/239/ord/latest/http://www.cnblogs.com/riskyer/p/3262745.htmlht ...

  3. #include <string.h>

    1 _memccpy 2 _memicmp 3 _strlwr 4 _strrev 5 _strset 6 _strupr 7 memccpy 8 memchr 9 memcpy 10 memicmp ...

  4. Python 操作 MySQL--(pymysql)

    h2 { color: #fff; background-color: #7CCD7C; padding: 3px; margin: 10px 0px } h3 { color: #fff; back ...

  5. UITableView进阶,cell刷新,界面返回 保持所选cell

    1.cell 刷新 NSIndexPath *indexPath_1=[NSIndexPath indexPathForRow:1 inSection:0]; NSArray *indexArray= ...

  6. 一台服务器同时搭建IIS和WAMP,利用WAMP 80端口转发

    打开wamp 里面的 httpd.conf 文件,找到以下四个语句,取消注释 #LoadModule proxy_module modules/mod_proxy.so -->LoadModul ...

  7. 使用logstash收集日志的可靠性验证

    实时计算里,需要对日志实时收集,logstash可以做到.目前的版本是1.4.2,官方文档在http://www.logstash.net/docs/1.4.2/,里面有详细的配置说明,使用也很简单. ...

  8. Android 开源库

    http://www.cnblogs.com/hawkon/p/3593709.html

  9. 自定义Toast样式-两行文本居中显示

    toast可以设置自定义的view和显示位置.下面是一个简单的例子,复杂些的就是改变其布局文件就可以了. /** * @author BMR * @ClassName: ToastWithTwoTex ...

  10. There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'?

    错误信息: 严重: Exception starting filter struts2 Unable to load configuration. - action - file:/C:/Users/ ...