下面是给同事做的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));