写在前面:我现在在头条写博客文章。大家可以关注下我的头条号:我是乐乐乐乐呀
目前最新的MongoDB连接版本为3.8,不过还是测试版本的。可以说截止目前为止,3.7是最新的版本。
在3.7版本中,以前旧版本有些方法已经申明为过期方法了:如,getDB()方法
这涉及到的一系列CRUD方法都发生了变化。
下面贴上一段基于3.7版本的连接代码:
public static void main(String[] args) {
MongoClientOptions.Builder builder = MongoClientOptions.builder();
//最大连接数
builder.connectionsPerHost(10);
//最小连接数
builder.minConnectionsPerHost(5);
//超时时间
builder.connectTimeout(1000*3);
// 一个线程成功获取到一个可用数据库之前的最大等待时间
builder.maxWaitTime(5000);
//此参数跟connectionsPerHost的乘机为一个线程变为可用的最大阻塞数,超过此乘机数之后的所有线程将及时获取一个异常.eg.connectionsPerHost=10 and threadsAllowedToBlockForConnectionMultiplier=5,最多50个线程等级一个链接,推荐配置为5
builder.threadsAllowedToBlockForConnectionMultiplier(5);
//最大空闲时间
builder.maxConnectionIdleTime(1000*10);
//设置池连接的最大生命时间。
builder.maxConnectionLifeTime(1000*10);
//连接超时时间
builder.socketTimeout(1000*10);
MongoClientOptions myOptions = builder.build();
List<ServerAddress> serverAddressList = new ArrayList<>();
ServerAddress record = new ServerAddress("127.0.0.1");
serverAddressList.add(record);
MongoCredential credential = MongoCredential.createCredential("loger","db_test","apple".toCharArray());
MongoClient mongoClient = new MongoClient(serverAddressList, credential, myOptions);
MongoDatabase dbTest = mongoClient.getDatabase("db_test");
String name = dbTest.getName();
System.out.println("数据库名字:"+name);
MongoIterable<String> strings = dbTest.listCollectionNames();
for(String str:strings){
System.out.println("数据库表名:"+str);
}
}
截图版:
代码中都有注释,这里就不多说了。执行看下结果:
MongoDB连接成功!
说明:每一个数据库,建议单独设置一个账户,用超级管理员账户在java client下操作其他数据库,似乎有问题。。。