对于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. 窗体的扩展样式GWL_EXSTYLE用于SetWindowLong

    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT or WS_EX_ ...

  2. grep 基于关键字搜索

    grep 'linux' /etc/passwd 搜索passwd文件下的包含linux的行 find / -user linux|grep Video 在用户为linux的根目录下搜房Video内容 ...

  3. mysql入库中文乱码问题

    mysql> show variables like '%char%';+--------------------------+----------------------------+| Va ...

  4. xshell + xmanger连接centos gnome+ kde桌面 for需要X window的App

  5. securecrt在linux与windows之间传输文件(转)

    摘自:http://blog.csdn.net/rangf/article/details/6096365 SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能.比ftp命令方便多 ...

  6. 字符串查找--B中是否有元素不在A中

    #include <stdio.h> int main(int argc, char const *argv[]) { char str[26]="AFDKJASD"; ...

  7. VB.NET的反射机制

    1.前提 Net的应用程序由几个部分:‘程序集’.‘模块’.‘类型’组成. 装配件是.Net应用程序执行的最小单位,编译出来的.dll..exe都是装配件. 2.概念 反射是获得运行时类型的方式. 概 ...

  8. protobuf使用错误总结

    1>HelloWorldScene.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall LoginReqMessage ...

  9. ER图与UML图

    ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象).属性和联系的方法,用来描述现实世界的概念 ...

  10. CentOS 6使用VNC配置远程桌面

    首先,配置vncservers(注意,rootW为1,普通用户按2,3以此类推) [root@hadoop1001 hadoop]# vi /etc/sysconfig/vncservers # VN ...