`

MongoDB 实战笔记 四

 
阅读更多
import java.net.UnknownHostException;

import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class DBTool {

	private DBTool(){}
	
	private static Mongo w ; //写
	private static Mongo r;    //读
	static{
		if (null == w) {
			synchronized (DBTool.class) {
				try {
					w = new Mongo();
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (MongoException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		if (null == r) {
			synchronized (DBTool.class) {
				try {
					r = new Mongo("10.166.112.245");
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (MongoException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
	}
	public static Mongo getWriteDb() {//获取写

		if (null == w) {
			synchronized (w) {
				try {
					w = new Mongo();
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (MongoException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return w;
	}
	
	public static Mongo getReadDB(){//获取读
		if (null == r) {
			synchronized (r) {
				try {
					r = new Mongo("10.16.112.245");
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (MongoException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return r;
	}
		
	public static void colse(){//关闭数据库
		
		if (null != w) {
			w.close();
		}
		if (null != r) {
			r.close();
		}
	}
	
}

 

 

 

 

import java.util.Iterator;

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;

public class DBToolOper {

	private Mongo m = null;
	private DB d = null;
	private DBCollection c = null;

	public DBToolOper(String type,String dbName) {//根据传入的类型,开启读写
		if ("w".equals(type)) {
			m = DBTool.getWriteDb();
		} else {
			m = DBTool.getReadDB();
		}
		d = m.getDB(dbName);
	}

	/**
	 * json  {x:1,y:{d:0}}
	 */
	public void writeJson(String json){//把转入的字符串json 转换成json对象
		JSONObject jo = (JSONObject)JSONValue.parse(json);
		Iterator iter = jo.keySet().iterator();
		BasicDBObject doc = new BasicDBObject();
		while (iter.hasNext()) {
			String key = iter.next().toString();
			//System.out.println("[key="+key+", val="+jo.get(key)+"]");
			doc.put(key, jo.get(key));
			
		}
		if (!doc.isEmpty()) {
			c.insert(doc);
		}
		
	}
	
	
	public long getCount(){//获取总数
		return c.getCount();
	}
	public void setDabase(String dbName) {//设置要访问的DB
		d = m.getDB(dbName);
	}
	
	public void setTable(String tbName){//设置要访问的集合
		c = d.getCollection(tbName);
	}
	
	public void printLimit(int row){//获取前row条数据
		DBCursor curr = c.find().limit(row);
		while(curr.hasNext())
			System.out.println(curr.next());
		
	}
	public void printAll(){//打印所有数据
		DBCursor curr = c.find();
		while(curr.hasNext())
			System.out.println(curr.next());
	}
	
	
	public void close(){//关闭数据库
		if (null != m) {
			m.close();
		}
	}
}

 

测试程序 

 

 主从数据库 实现读写分离

Random rm = new Random(System.currentTimeMillis());
//读写分离数据库  获取写数据库
DB dw = DBTool.getDB("w");
DBCollection collr = dw.getCollection("c2");
BasicDBObject doc = new BasicDBObject();
doc.put("name"+rm.nextInt(999999999), "MongoDB");
collr.insert(doc);
		
DB dr = DBTool.getDB("r");
collr = dr.getCollection("c2");
DBCursor curr = collr.find().limit(2000);
while(curr.hasNext())
     System.out.println(curr.next());
DBTool.colse();

 

 登陆具有权限的数据库(用户名,密码)

Mongo m = new Mongo("10.16.112.245");
DB db = m.getDB("mybase");
//获取系统权限 登陆admin 再切换数据库
boolean auth = db.authenticate("root", "888".toCharArray());
db = m.getDB("test");
			
Set<String> colls = db.getCollectionNames();
for (String string : colls) {
      System.out.println(string);
}
			
DBCollection coll = db.getCollection("c2");
System.out.println(coll.count());
DBCursor cur = coll.find().limit(2);
while(cur.hasNext())
     System.out.println(cur.next());
m.close();

 

 二次封装  ,更方便的操作

 

DBToolOper dbOper = new DBToolOper("w","mybase");
dbOper.setTable("c8");
for (int i = 0; i < 10; i++) {
     dbOper.writeJson("{\"xx7\":"+i+",\"a\":[{\"b\":0,\"c\":2}]}");
}
System.out.println(dbOper.getCount());
dbOper.printLimit(50);
dbOper.close();

 

 继续的方向: 条件查询

分享到:
评论

相关推荐

    MongoDB3.2实战笔记

    ### MongoDB 3.2 实战笔记 #### 一、前言 MongoDB 是一款非常流行的开源文档型数据库系统,以其高性能、高可用性以及灵活的数据模型而受到广泛欢迎。本篇实战笔记主要针对 MongoDB 3.2 版本,涵盖其安装、配置、...

    深入浅出MongoDB应用实战开发视频教学

    深入浅出MongoDB应用实战开发视频教学,里面包含笔记和资料

    mongodb group aggregate项目实战笔记

    本实战笔记旨在通过一个具体的案例,来探讨如何利用 MongoDB 的 `group` 和 `aggregate` 功能,对特定的数据集进行有效的分析和统计。 #### 二、MongoDB Group Aggregate 基础介绍 MongoDB 中的 `aggregate` 方法是...

    MongoDB实战第二版笔记(9)第八章笔记

    MongoDB实战第二版笔记(9)第八章笔记   1、正确设置索引,MongoDB可以高效使用其硬件,并且快速服务查询。而错误索引导致查询减速、写减速、恶化硬件设备使用。【高效使用MongoDB为何要理解索引?】   2、索引...

    MongoDB基础教程笔记 emp.json

    MongoDB练习文件

    深入云计算(MongoDB管理与开发实战详解--学习笔记

    MongoDB 是一种流行的开源NoSQL数据库,以C++语言开发,尤其适合处理大规模数据和高并发场景。在传统的关系型数据库如Oracle、DB2、SQL Server、MySQL等面临并发负载高、海量数据处理、复杂的事务管理和多表关联查询...

    免费的mongoDB

    再者,"MongoDB实战"文档将理论与实践相结合,通过实际案例展示如何在项目中有效应用MongoDB。这部分可能会涉及到应用程序的集成、性能调优、数据迁移以及故障排查等实际操作。实战经验对于提升MongoDB技能至关重要...

    MongoDB实战第二版笔记(14)第十三章笔记(系列终)

    1、MongoDB三种不同类型的集群: 单节点:不需要可靠性和数据集比较小的选择 可复制集:最低是3个节点(2个数据存储和1个裁判节点) 分片集群。最小配置有2个片,只有一个片会增加额外压力而且无法利用分片优势,每...

    gin+websocket+mongodb实现 IM 即时聊天系统,基于WS连接的即时聊天

    4. 对敏感操作(如用户登录、消息发送)进行安全验证,防止恶意攻击。 最后,测试和部署是必不可少的步骤。确保在各种场景下系统都能正常工作,然后选择合适的云服务进行部署,确保高可用性和可扩展性。 综上所述...

    Machine-数据库实战笔记

    《机器学习与数据库实战笔记》 在信息技术领域,数据库与机器学习是两个至关重要的组成部分,它们在现代数据驱动的应用程序中发挥着核心作用。数据库负责高效、安全地存储和管理大量数据,而机器学习则利用这些数据...

    网上商城实战笔记包含源码

    《网上商城实战笔记》是一份全面且深入的电商系统开发指南,其中包含了源代码,让读者能够通过实际操作来理解并掌握网上商城的构建过程。这份资料的核心目标是帮助开发者和爱好者了解并实现一个完整的电子商务平台,...

    读书笔记:《左手MongoDB右手Redis——从入门到商业实战》书籍配套源代码。.zip

    读书笔记:《左手MongoDB右手Redis——从入门到商业实战》书籍配套源代码。

    李兴华java笔记

    《李兴华Java实战经典笔记》是一份深入探讨Java编程技术的宝贵资料,由知名IT教育专家李兴华编撰。这份笔记集合了他在教学和实践中积累的丰富经验,旨在帮助学习者掌握Java的核心概念、设计模式以及实战技巧。通过这...

    Node.js MongoDB AngularJSWeb开发.part3

    2. MongoDB实战:可能讲解了更复杂的查询操作、聚合框架、数据备份与恢复、Sharding和Replica Sets等高级特性。 3. AngularJS应用开发:可能涉及到模块化、服务、过滤器、指令的创建与使用,以及如何实现路由和状态...

    数据库实战isualization-笔记

    4. 可视化原理与技巧:笔记会讲解颜色理论、视觉编码、图表选择原则等基础知识,以确保选择最合适的图表类型来传达数据信息。比如,柱状图用于比较类别间的数量差异,折线图用于显示时间序列数据的趋势,散点图用于...

    MongoDB入门的一些资料

    最后,`MongoDB.docx`可能是一个Word文档,详细介绍了MongoDB的各个方面,可能包含更多的理论背景、实战案例和最佳实践: 1. **架构设计**:解释MongoDB的分布式架构,包括主从复制和分片集群。 2. **性能调优**:...

    python源码笔记实战 物超所值

    python笔记包括基础和实战+源码,物超所值。 目录: 01-Linux基础 02-Python基础第一部分 03-Python基础第二部分 04-Python基础第三部分 05-面向对象 06-MySQL 07-网络编程 08-多线程 09-MongoDB数据库 10-正则...

    mongodb-university:聚合 MongoDb 大学课程和练习

    在"mongodb-university-master"这个压缩包文件中,可能包含的是MongoDB University课程的源代码、笔记、练习和解决方案。学员可以通过研究这些材料来加深对MongoDB聚合操作的理解,同时提升自己的Java编程技能,以便...

    Node+Express+Mongoose车展项目入门到实战课件、笔记、资料、代码及数据库.zip

    本课程主要围绕“Node.js+Express+Mongoose”这一技术栈,通过构建一个完整的车展项目,带领学习者从基础入门到实战演练,深入理解和掌握Web开发中的关键技能。以下是相关知识点的详细介绍: **Node.js**: Node.js...

    软件设计师复习笔记资料.rar

    本资料集是软件设计师考试的宝贵资源,不仅提供了全面的知识点覆盖,还有针对性的复习方法和实战经验,适合备考者在冲刺阶段进行系统学习和复习。希望每一位考生都能从中受益,顺利通过考试,成为一名优秀的软件设计...

Global site tag (gtag.js) - Google Analytics