MongoDB Java 教程 - 连接数据库

1,803 阅读1分钟
原文链接: www.codemore.top

使用MongoClient连接MongoDB数据库,MongoClient 实例自带连接池,一个应用中,仅需要一个MongoClient实例即可。

连接单个MongoDB实例

使用无参的MongoClient,默认连接localhost,端口使用27017

MongoClient mongoClient = new MongoClient();

指定host,端口默认 27017

MongoClient mongoClient = new MongoClient( "host1" );

指定host和端口

MongoClient mongoClient = new MongoClient( "host1" , 27017 );

使用MongoClientURI创建连接

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host1:27017"));
连接复制集

使用MongoClientURI连接

MongoClient mongoClient = new MongoClient(
    new MongoClientURI("mongodb://host1:27017,host2:27017,host3:27017"));

通过制定ServerAddress 连接

MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
              new ServerAddress("host2", 27017),
              new ServerAddress("host3", 27017)));
连接分片集群

指定mongos的host和端口

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

通过MongoClientURI 连接

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));

使用MongoClientURI 连接多个mongos实例

MongoClient mongoClient = new MongoClient(
   new MongoClientURI("mongodb://host1:27017,host2:27017"));

使用ServerAddress 连接多个实例

MongoClient mongoClient = new MongoClient(
   Arrays.asList(new ServerAddress("host1", 27017),
                 new ServerAddress("host2", 27017)));
连接选项

可以使用MongoClient或者MongoClientOptions,或者这两者指定连接MongoDB的配置。 例如如果需要使用SSL连接

MongoClientURI uri = new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoClient mongoClient = new MongoClient(uri);

使用MongoCredential 设置授权信息

String user; // the user name
 String database; // the name of the database in which the user is defined
 char[] password; // the password as a character array
 // ...

 MongoCredential credential = MongoCredential.createCredential(user, database, password);

 MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).build();

 MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017),
                                           Arrays.asList(credential),
                                           options);