MongoDB初探系列之四:MongoDB与Java共舞

由于版本不同,可能API也有所不同,本次学习用的是3.0版本。

1、使用的mongodb的jdbc驱动版本为:mongo-java-driver-3.0.0.jar

2、本节只是简单介绍JDBC操作,暂时不考虑效率问题。

3、封装的工具类代码如下:

public class MongoDBProxy {

	private static MongoDBProxy proxy=null;//单实例
	private static MongoDatabase db=null;//数据库连接对象
	private static String [] paramArray=new String[5];//数据库连接参数
	private MongoDBProxy(){

	}
	static{
		paramArray[0]="username";
		paramArray[1]="password";
		paramArray[2]="host";
		paramArray[3]="port";
		paramArray[4]="databaseName";
	}
	/**
	 * 得到MongoDBProxy
	 * 采用系统默认配置
	 */
	public static MongoDBProxy getMongoDBProxy(){
		if(proxy==null){
			proxy=new MongoDBProxy();
			String sURI = String.format("mongodb://%s:%[email protected]%s:%d/%s",paramArray[0],paramArray[1],paramArray[2],Integer.parseInt(paramArray[3]),paramArray[4]);
			MongoClientURI uri = new MongoClientURI(sURI);
			MongoClient mongoClient = new MongoClient(uri);
			db= mongoClient.getDatabase(paramArray[4]);
		}
		return proxy;
	}
	/**
	 * 批量查询数据
	 * @param table  集合名称
	 * @param page   分页参数
	 * @param filter 过滤条件
	 * @param sort   排序条件
	 */
	public  Page findDocList(String table,Page page,Bson filter,Bson sort){
		MongoCollection<Document>  coll=db.getCollection(table);
		long count=coll.count(filter);//根据过滤条件获取数据总量
		Page p=PageUtil.createPage(page,Integer.parseInt(String.valueOf(count)));
		p.setFromUrl((page.getFromUrl()==null)?"":page.getFromUrl());
		p.setParamString((page.getParamString()==null)?"":page.getParamString());
		FindIterable<Document> resultIterable=coll.find();
		//执行条件过滤
		resultIterable=resultIterable.sort(sort).filter(filter).skip(p.getBeginIndex()).batchSize(p.getEveryPage());
		MongoCursor<Document> cousor=resultIterable.iterator();
		List<Document> dataList=new ArrayList<Document>();
		while(cousor.hasNext()){
			dataList.add(cousor.next());
		}
		p.setDataList(dataList);
		return PageUtil.buildPageString(p);
	}
	/**
	 * 获取单个文档
	 * @param table  集合名称
	 * @param filter 过滤条件
	 * @param sort   排序条件
	 */
	public  Document findOneDoc(String table,Bson filter,Bson sort){
		MongoCollection<Document>  coll=db.getCollection(table);
		FindIterable<Document> resultIterable=coll.find();
		if(sort!=null){
			resultIterable.sort(sort);
		}
		if(filter!=null){
			resultIterable.filter(filter);
		}
		return resultIterable.first();
	}
	/**
	 * 添加文档
	 * @param table 集合名称
	 * @prama doc   文档内容
	 */
	public  void addDocument(String table,Document doc){
		MongoCollection<Document> coll=getCollection(table);
		coll.insertOne(doc);
	}
	/**
	 * 批量添加文档
	 * @param table     集合名称
	 * @prama docList   文档集合
	 */
	public  void addDocumentList(String table,List<Document> docList){
		MongoCollection<Document> coll=getCollection(table);
		coll.insertMany(docList);
	}
	/**
	 * 更新文档
	 * @param table  集合名称
	 * @param query  查询条件
	 * @param up     更新数据
	 */
	public  UpdateResult updateDocument(String table,Bson query,Bson up){
		MongoCollection<Document> coll=getCollection(table);
		return coll.updateOne(query,up);
	}
	/**
	 * 替换文档
	 * @param table  集合名称
	 * @param query  查询条件
	 * @param up     替换的文件对象
	 */
	public  UpdateResult replaceDocument(String table,Bson query,Document up){
		MongoCollection<Document> coll=getCollection(table);
		return coll.replaceOne(query, up);
	}
	/**
	 * 删除文档
	 * @param table  集合名称
	 * @param delete 删除条件
	 */
	public  DeleteResult deleteDocument(String table,Bson delete){
		MongoCollection<Document> coll=getCollection(table);
		return coll.deleteOne(delete);
	}
	/**
	 * 获取集合对象
	 * @param table  集合名称
	 */
	private  MongoCollection<Document>  getCollection(String table){
		return db.getCollection(table);
	}
}

4、调用demo

MongoDBProxy proxy=MongoDBProxy.getMongoDBProxy();
System.out.println(proxy.findOneDoc("users",null,null).get("_id"));
Document doc=new Document();
doc.put("user","李四");
proxy.addDocument("users", doc);
Bson bson=new BasicDBObject("user","张三");
proxy.deleteDocument("users", bson);

后续再深入学习,先用demo上上手哇,哈哈。

版权声明:转载请注明博文地址,尊重作者劳动成果。欢迎关注http://blog.csdn.net/zgs_shmily,一起成长。

时间: 2024-08-26 08:41:45

MongoDB初探系列之四:MongoDB与Java共舞的相关文章

MongoDB初探系列之一:MongoDB安装及建议配置

想必第一次听说MongoDB的各位小伙伴,一定是听到他的诸多很N的地方才决定来学习一下这个东东的.不管你是出于什么目的开始踏上这段学习之旅,但是同样作为菜鸟的我很乐意和各位一起成长.废话不多说了,各种简介在这里就不写了,只留下干货.想看简介的各位可以找度娘自行解决. 1.第一次接触新东西,当然要去官网官网转转. MongoDB官网:https://www.mongodb.org/ 下载内容如下图所示: 如果点击进入下载页面后,没有弹出来下载对话框,点击下图所示的内容即可.注意:不需要注册信息的.

MongoDB初探系列之二:认识MongoDB提供的一些常用工具

在初探一中,我们已经可以顺利的将MongoDB在我们自己的机器上跑起来了.但是在其bin目录下面还有一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹下创建的文件的用途. 1.bin目录下面的各种小工具简介及使用方式 bsondump.exe 用于将导出的BSON文件格式转换为JSON格式mongo.exe mongoDB的客户端 mongod.exe 用于启动mongoDB的Server mongodump.exe 用于从mongodb数据库中导

MongoDB在windows上安装以及java中的增删改查

1.windows下的安装创建 http://tech.it168.com/a2011/0603/1200/000001200064_2.shtml http://blog.csdn.net/xiaoxing598/article/details/54233044 2.Java操作mongodb http://www.cnblogs.com/zhwl/p/3491213.html http://blog.csdn.net/xiaoyw71/article/details/49633831 htt

Mongodb入门系列(2)——在linux下安装、启动、关闭MongoDB以及注意事项(详细)

从官网下载MongoDB的压缩包.http://www.mongodb.org/downloads 将mongodb-linux-x86_64-2.6.8.tgz解压 [[email protected] Downloads]$ tar zxvf mongodb-linux-x86_64-2.6.8.tgz  mongodb-linux-x86_64-2.6.8/README mongodb-linux-x86_64-2.6.8/THIRD-PARTY-NOTICES mongodb-linux

爬虫系列之mongodb

mongodb mongo简介 简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数

mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域

这个系列大致想跟大家分享以下篇章(我会持续更新的(^ω^)): 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4.mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域 5.mongo 3.4分片集群系列之五:详解平衡器 6.mongo 3.4分片集群系列之六:详解配置数据库 7.mongo 3.4分片集群系列之七:配置数

MongoDB学习笔记(一) MongoDB介绍及安装

这是MongoDB的系列学习笔记的第一篇,主要介绍什么是非关系型数据库MongoDB,如何下载,去哪儿下载,又该怎么正确的安装等一系列问题. 一.前言 最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下.本人不才,借着自学的 机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论.部分资源出自其他博客,旨将零散知识点集中到一起,如果有侵犯您的权利,请联系li- [email protected].大部分内容均系原创,欢迎大家转载分享,

TCP/IP网络编程系列之四(初级)

TCP/IP网络编程系列之四-基于TCP的服务端/客户端 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流的套接字.在了解TCP之前,先了解一下TCP所属的TCP/IP协议栈. 如图所示,TCP/IP协议栈共分为4层,可以理解成数据收发分成了4个层次化过程. 链路层 它是物理链接领域标准化结果,也是最基本的领域,专门定义LAN.WAN.MAN等网络标准.若两台计算机通过网络进行数据交换,链路层就负责整个物

【MongoDB】01、MongoDB基础

一.MongoDB概述 1.MogoDB简介 什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. 一个文档相当于mysql数据库中的一行数据 200