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

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

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

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

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

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

package com.jadyer.test;

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List; import org.bson.types.ObjectId;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.WriteResult;
import com.mongodb.util.JSON; /**
* mongoDB的Java驱动測试
* @see ----------------------------------------------------------------------------------------
* @see 配置
* @see 1)下载https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.1.zip
* @see 2)解压到本地硬盘D:\Develop\mongoDB\中,并配置环境变量path=D:\Develop\mongoDB\bin
* @see 然后在CMD下运行此命令验证成功安装与否>mongod --version
* @see 3)建立D:\Develop\mongoDBData\目录,用于存放mongoDB数据文件
* @see 4)自己定义bat文件,分别用于启动mongoDB数据库和连接数据库的client
* @see 启动client的mongo_client.bat内容为-->mongo 127.0.0.1:27017/admin
* @see 启动数据库的mongo_db.bat内容为------>mongod --dbpath D:\Develop\mongoDBData --rest
* @see 注:加入[--rest]參数是为了可以訪问mongoDB的Web控制台http://127.0.0.1:28017/
* @see ----------------------------------------------------------------------------------------
* @see Java驱动
* @see 这里要用到mongoDB的Java驱动包,下载地址http://docs.mongodb.org/ecosystem/drivers/java/
* @see ----------------------------------------------------------------------------------------
* @create May 15, 2014 10:17:30 PM
* @author 玄玉<http://blog.csdn.net/jadyer>
*/
public class MongoDBTest {
private static MongoClient mongoClient;
private static DB db; /**
* 建立数据库连接
*/
@BeforeClass
public static void globalInit(){
try {
//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)));
mongoClient = new MongoClient("127.0.0.1", 27017);
} catch (UnknownHostException e) {
System.err.println("mongoDB主机地址有误");
}
db = mongoClient.getDB("mydemo");
} /**
* 销毁数据库连接
*/
@AfterClass
public static void globalDestroy(){
mongoClient.close();
} /**
* 获取数据库信息
*/
@Test
public void getMetaData(){
//查询数据库中全部的集合名称
for(String collectionName : db.getCollectionNames()){
System.out.println("mydemo数据库所拥有的集合为:[" + collectionName + "]");
}
//查询某一集合中的数据
DBCollection collection = db.getCollection("person");
DBCursor cursor = collection.find();
try{
while(cursor.hasNext()){
System.out.println("person集合所拥有的name为--[" + cursor.next().get("name") + "]");
}
}finally{
cursor.close();
}
System.out.println("person集合中的记录数为----------->" + cursor.count());
System.out.println("person集合数据格式化后的JSON串为-->" + JSON.serialize(cursor));
} /**
* 创建一个空的"moive"集合
*/
@Test
public void createCollection(){
db.createCollection("movie", new BasicDBObject());
} /**
* 为"moive"集合加入文档
*/
@Test
public void insertDocument(){
DBObject doc = new BasicDBObject();
doc.put("name", "24");
doc.put("season", "ninth");
doc.put("score", 88);
List<String> actorList = new ArrayList<String>();
actorList.add("Jack Bauer");
actorList.add("Counter Terrorist Unit");
doc.put("actor", actorList);
db.getCollection("movie").insert(doc);
} /**
* 批量插入文档
*/
@Test
public void insertBatchDocument(){
List<DBObject> docList = new ArrayList<DBObject>();
DBObject doc11 = new BasicDBObject("name", "Prison Break").append("season", "fourth").append("score", 99);
DBObject doc22 = new BasicDBObject("name", "Game of Thrones").append("season", "third").append("score", 92);
docList.add(doc11);
docList.add(doc22);
db.getCollection("movie").insert(docList);
} /**
* 依据_id删除数据
*/
@Test
public void deleteById(){
WriteResult result = db.getCollection("movie").remove(new BasicDBObject("_id", new ObjectId("5374c6dc5030e0ea4dac8907")));
System.out.println("本次操作影响的记录条数为:" + result.getN());
} /**
* 依据条件删除数据
*/
@Test
public void deleteByData(){
DBObject doc = new BasicDBObject();
doc.put("name", "Prison Break");
WriteResult result = db.getCollection("movie").remove(doc);
System.out.println("本次操作影响的记录条数为:" + result.getN());
} /**
* 更新数据
* @see 添加email属性
*/
@Test
public void update(){
DBObject doc = new BasicDBObject();
doc.put("$set", new BasicDBObject("email", "Jadyer@yeah.net"));
WriteResult result = db.getCollection("movie").update(new BasicDBObject(), doc, false, true);
System.out.println("本次操作影响的记录条数为:" + result.getN());
} /**
* 查询"moive"集合中的key
*/
@Test
public void getKey(){
DBObject keys = new BasicDBObject();
keys.put("_id", false);
keys.put("name", true);
//keys.put("score", true);
//第一个參数表示查询条件,第二个參数表示返回的详细key
DBCursor cursor = db.getCollection("movie").find(null, keys);
try{
while(cursor.hasNext()){
DBObject object = cursor.next();
System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
}
}finally{
cursor.close();
}
} /**
* 查询"moive"集合中分数不超过95的key
*/
@Test
public void getKeyUseScore(){
DBObject ref = new BasicDBObject();
ref.put("score", new BasicDBObject("$lte", 95));
DBCursor cursor = db.getCollection("movie").find(ref, null);
try{
while(cursor.hasNext()){
DBObject object = cursor.next();
System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
}
}finally{
cursor.close();
}
} /**
* 分页查询
*/
@Test
public void limitSkip(){
DBCursor cursor = db.getCollection("movie").find(null, null);
cursor.limit(0).skip(1);
try{
while(cursor.hasNext()){
DBObject object = cursor.next();
System.out.println("查询到的name=" + object.get("name"));
}
}finally{
cursor.close();
}
}
}

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. 【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页

    itext5页眉页脚工具类,实现page x of y 完美兼容各种格式大小文档A4/B5/B3,兼容各种文档格式自动计算页脚XY轴坐标 鉴于没人做的这么细致,自己就写了一个itext5页眉页脚工具类 ...

  2. coroutine

    在脚本语言中,coroutine 不是个新鲜词汇,比如 lua 内建 coroutine,python中的greenlet,但在C程序中,并不是太常见. windows 下有 fiber,相关函数为 ...

  3. Ribbon Gymnastics

    Robert is a gymnastics coach. Unfortunately, he got four gymnastics beginners to attend the coming c ...

  4. (Pre sell) ZOPO ZP998 (C2 II) 5.5 inch smart phone True Octa Core MTK6592 1920X1080 FHD screen 401 ppi 2GB/32GB 14.0Mp camera-in Mobile Phones from Electronics on Aliexpress.com

    (Pre sell) ZOPO ZP998 (C2 II) 5.5 inch smart phone True Octa Core MTK6592 1920X1080 FHD screen 401 p ...

  5. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

  6. Python学习笔记8-类的继承 、深度优先、广度优先

    Python 类声明 语法: class 类名: 类体 例: #--encoding:utf-8-- # class AddressBookEntity: myVersion=0.1 def __in ...

  7. Python 操作 MySQL--(pymysql)

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

  8. JavaScript-1.最简单的程序之网页弹出对话框,显示为Warning---ShinePans

    代码: <html> <head> <meta http-equiv="content-type" content="text/html;c ...

  9. ASP.NET Web API Authorization using Tokens

    Planning real world REST API http://blog.developers.ba/post/2012/03/03/ASPNET-Web-API-Authorization- ...

  10. css 中的若干心得

    css布局中定位机制主要是普通的流,也就是说按照HTML文本的顺序在窗口上从上到下.从左到右去显示,遇见块级元素就换行显示.为了更进一步的控制,我可以使用相对定位.绝对定位.固定定位以及浮动. 相对定 ...