31 May 2016

下面是给同事做的mongodb入门培训资料,都是一些很简单的东西,目的就是对mongodb有个大致的概念

##简介

mongodb是一个分布式文档存储数据库,光从名字就可以看出,它有两个特点

  • 分布式,为应对大数据的存储需求,通过分布式天生支持海量的数据存储。
  • 文档存储,文档不想关系型数据库中的表一样,可以不事先定义好表结构,它是模式自由的

使用场景

  • 数据量大的业务
  • 没有事务要求
  • 对象数据变化较快

安装配置

  • 单击安装非常简单,下载下来解压后,直接启动即可;默认监听27017端口,并且没有用户名和密码。单机环境仅限于测试和学习,生产环境不要这么用
  • Replica Sets群集安装,集群安装至少要三台机器;具体的安装步骤参考其他文档,测试环境已经安装了分别为:192.168.11.234-236三台机器,其中235是主机。

客户端操作

  • Robomongo客户端,windows版本,下载安装即可
  • 查询示例:

      根据_id查询:
      db.getCollection('ent_info').find({
      "_id":964
      })
      //根据股东名称查询
      db.getCollection('ent_info').find({
      "shareholders.holderName" :"四川长虹电子控股集团有限公司"
      })
    

java api

项目中引入mongodb的java驱动

		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongodb-driver</artifactId>
			<version>3.2.2</version>
		</dependency>

获取mongodb 连接

  • 单机

		// 连接到 mongodb 服务
		MongoClient mongoClient = new MongoClient("192.168.11.238", 27017);	
		// 连接到数据库
		MongoDatabase mongoDatabase = mongoClient.getDatabase("gongshi");
		//获取表的操作对象
		MongoCollection collection = mongoDatabase.getCollection("ent_info");
  • 集群

		MongoClientOptions.Builder build = new MongoClientOptions.Builder();
		 //与目标数据库能够建立的最大connection数量为50
		build.connectionsPerHost(50);  
		//如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
		build.threadsAllowedToBlockForConnectionMultiplier(50); 
		 
		build.maxWaitTime(1000*60*2);
		build.connectTimeout(1000*60*1);    //与数据库建立连接的timeout设置为1分钟
		MongoClientOptions options = build.build();	
		MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress(hosts[0], port),
			new ServerAddress(hosts[1], port),
			new ServerAddress(hosts[2], port)),
			Arrays.asList(MongoCredential.createCredential(user,dbname,pass.toCharArray())),options);
		// 连接到数据库
		MongoDatabase mongoDatabase = mongoClient.getDatabase("gongshi");
		//获取表的操作对象
		MongoCollection collection = mongoDatabase.getCollection("ent_info");

添加记录


	String json = "{id:1,name:'zhangsan',age:18}";
	Document document = Document.parse(json);
	document.put("createDate",new Date());
	//插入一条记录
	collection.insertOne(document);
	
	//插入多条记录:
	collection.insertMany(documents);

###查询


	Object a = collection.find(new BasicDBObject("_id",id));

删除


	collection.deleteOne(new BasicDBObject("_id", id));

参考文档

http://www.runoob.com/mongodb/working-with-rockmongo.html





Fork me on GitHub