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", "[email protected]"));
		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();
		}
	}
}
时间: 2024-11-09 11:11:54

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

Java操作mongoDB2.6的常见API用法

对于mongoDB而言,学习方式和学习关系型数据库差不太多 开始都是学习如何insert.find.update.remove,然后就是分页.排序.索引,再接着就是主从复制.副本集.分片等等 最后就是通过它提供的各个驱动(比如Java.PHP.node.js等等)来练习所谓的高级用法 另外:相对于Oracle有PLSQL Developer,MySQL有HeidiSQL mongoDB也不例外,它的图形化工具中有一款叫做mongoVUE的,我用的是1.5.3破解版(不是每15天就得改一次注册表的

jquery api 常见api 效果操作例子

addClass_removeClass_toggleClass_hasClass.html 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>method_1.html</title> 5 <meta http-equiv="content-type" conten

jquery api 常见api 元素操作例子

append_prepend.html 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html> 3 <head> 4 <title>method_1.html</title> 5 <meta http-equiv="content-type" content="text/html; charset=

java数据结构:单链表常见操作代码实现

一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashMap等集合的底层结构都是链表结构.链表以结点作为存储单元,这些存储单元可以是不连续的.每个结点由两部分组成:存储的数值+前序结点和后序结点的指针.即有前序结点的指针又有后序结点的指针的链表称为双向链表,只包含后续指针的链表为单链表,本文总结的均为单链表的操作. 单链表结构: Java中单链表采用No

elasticsearch java操作 api

默认进行了elasticsearch安装和ik安装, 超时配置, 分页压力配置等 添加maven依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.4.0</version> </dependency> <dependency> <group

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

java操作mongodb(连接池)(转)

原文链接: java操作mongodb(连接池) Mongo的实例其实就是一个数据库连接池,这个连接池里默认有10个链接.我们没有必要重新实现这个链接池,但是我们可以更改这个连接池的配置.因为Mongo的实例就是一个连接池,所以,项目中最好只存在一个Mongo的实例. 常见的配置参数: connectionsPerHost:每个主机的连接数 threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结

MongDB基础学习(七)—— 【MongoDB for Java】Java操作MongoDB

[MongoDB for Java]Java操作MongoDB 开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走).本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下: (1)开发环境: System:Windows IDE:eclipse Database:mongoDB2.6 Maven:apac

Java 操作MySql数据库

Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Java Database Connectivity)是连接Java和数据库的纽带,简单的说,就是Java利用JDBC API屏蔽掉了底层数据库具体实现的差异.对于不同的数据库,Java的操作方式是不同的,这样有两个优点: 简化了访问数据库的程序代码,无须涉及与底层数据库实现相关的细节 可以在同一个Ja