Java操作mongoDB2.6的常见API使用方法
对于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使用方法的更多相关文章
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
- java操作redis。jedis使用api
package com.wujintao.redis; import java.util.Date; import java.util.HashMap; import java.util.Iterat ...
- Java入门(4)——常见的String方法
考虑到API当中的解释,新手可能有点看不懂(我刚开始就是不太看得懂).最好的学习方法当然是是自己一个一个去试一遍,然后就可以加深印象. 然后, 这是我当初学习的时候用自己的大白话做的笔记.现在查阅的话 ...
- Java操作Kafka执行不成功的解决方法,Kafka Broker Advertised.Listeners属性的设置
创建Spring Boot项目继承Kafka,向Kafka发送消息始终不成功.具体项目配置如下: <?xml version="1.0" encoding="UTF ...
- Java Web项目开发中常见路径获取方法
项目绝对路径 String serverPath = request.getSession().getServletContext().getRealPath("/"); E:\J ...
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- JAVA操作Excel时文字自适应单元格的宽度设置方法
使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- rocketmq(三 java操作rocket API, rocketmq 幂等性)
JAVA操作rocketmq: 1.导入rocketmq所需要的依赖: <dependency> <groupId>com.alibaba.rocketmq</group ...
随机推荐
- 进程占用百分百CPU不卡(从未试过,当别的程序运行的时候,当前程序还会运行吗?)
在写程序中.为了让程序效率高.有时会点用很高的CPU.这里用户体验不好可以设置线程的优先级来搞定. BOOL SetThreadPriority( HANDLE hThread, // handle ...
- 探究android控件及布局
控件(widget) 1. TextView(该控件的一些需要注意的属性,下同) gravity="center"textSize="24sp"textColo ...
- MyGui笔记(1)建立第一个工程
记录下学习 MyGui的一些笔记,从建立第一个工程开始. 步骤: 1.右键MYGUI解决方案,添加→新建项目,选择“Win32 项目”,名称为:TestHello.下一步,勾选“空项目”. 2.设置工 ...
- javascript第六课类型转换
1.parseint(参数): 转换为整数,即使参数中的字符串包含字母数字混合,此方法也会自动一个一个判断和转换 parseInt(参数,进制);将参数通过几进制的方式转为数字 2.parsefl ...
- UCS2转UTF-8方法
前两天工作时需要将UCS2编码转为UTF-8编码在网页显示.网上找了好久没有好方法,后来还是同事给了一个自己的函数,顺利解决问题.把函数贴在这里,愿帮助遇到同样问题的工友们~ /** * U ...
- cocos2D(九)---- CCAction
之前介绍CCNode的时候说过,动作是指在特定时间内完毕移动.缩放.旋转等操作的行为,节点能够通过执行动作来实现动画效果,这里的动作就是指CCAction对象,它有非常多的子类,每一个子类都封装了不同 ...
- 小猪的Android入门之路 Day 7 part 2
小猪的Android入门之路 Day 7 part 2 Android的数据存储与訪问之--SharedPreferences(保存偏好參数) ---转载请注明出处:coder-pig 本节引言: 在 ...
- Linux网桥介绍
网桥的功能类似于二层交换机,作用都是划分冲突域,它们之前且一些细微的差别,此处不展开. Linux网桥作为一个特殊的网桥的实现,有一些自己的特点,因为没有看代码,只能从功能上简单分析一下.个人认为,L ...
- 海量数据解决思路之BitMap
一.概述 本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复.判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景 ...
- SQL事务与并发
1.Transaction(事务)是什么: 事务是作为单一工作单元而执行的一系列操作.包括增删查改. 2.事务的种类: 事务分为显示事务和隐式事务: 隐式事务:就是平常我们使用每一条sql 语句就是一 ...