连接阿里mongodb遇到的坑

最近使用阿里的mongodb,在连接时遇到的一些问题

可能是阿里的对接文档有段时间没更新了,所以看起来会有不一致

一.获取连接

1.阿里提供的对接文档(2018-9-1查询)

 

Java 连接示例

相关链接

获取云数据库 MongoDB 连接信息

请查看MongoDB连接信息七要素获取方法

Java Demo Code

Maven配置

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mongodb</groupId>
  4. <artifactId>mongo-java-driver</artifactId>
  5. <version>3.0.4</version>
  6. </dependency>
  7. </dependencies>

Java Code

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.UUID;
  4. import org.bson.BsonDocument;
  5. import org.bson.BsonString;
  6. import org.bson.Document;
  7. import com.mongodb.MongoClient;
  8. import com.mongodb.MongoClientOptions;
  9. import com.mongodb.MongoClientURI;
  10. import com.mongodb.MongoCredential;
  11. import com.mongodb.ServerAddress;
  12. import com.mongodb.client.MongoCollection;
  13. import com.mongodb.client.MongoCursor;
  14. import com.mongodb.client.MongoDatabase;
  15. public class Main {
  16. public static ServerAddress seed1 = new ServerAddress("demotest-1.mongodb.tbc3.newtest.rdstest.aliyun-inc.com", 27017);
  17. public static ServerAddress seed2 = new ServerAddress("demotest-2.mongodb.tbc3.newtest.rdstest.aliyun-inc.com", 27017);
  18. public static String username = "demouser";
  19. public static String password = "123456";
  20. public static String ReplSetName = "mgset-1441984463";
  21. public static String DEFAULT_DB = "admin";
  22. public static String DEMO_DB = "test";
  23. public static String DEMO_COLL = "testColl";
  24. public static MongoClient createMongoDBClient() {
  25. // 构建Seed列表
  26. List<ServerAddress> seedList = new ArrayList<ServerAddress>();
  27. seedList.add(seed1);
  28. seedList.add(seed2);
  29. // 构建鉴权信息
  30. List<MongoCredential> credentials = new ArrayList<MongoCredential>();
  31. credentials.add(MongoCredential.createScramSha1Credential(username,
  32. DEFAULT_DB, password.toCharArray()));
  33. // 构建操作选项,requiredReplicaSetName属性外的选项根据自己的实际需求配置,默认参数满足大多数场景
  34. MongoClientOptions options = MongoClientOptions.builder()
  35. .requiredReplicaSetName(ReplSetName).socketTimeout(2000)
  36. .connectionsPerHost(1).build();
  37. return new MongoClient(seedList, credentials, options);
  38. }
  39.  
  40. public static MongoClient createMongoDBClientWithURI() {
  41. //另一种通过URI初始化
  42. //mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  43. MongoClientURI connectionString = new MongoClientURI("mongodb://" + username + ":" + password + "@" + seed1 + "," + seed2 + "/" + DEFAULT_DB + "?replicaSet=" + ReplSetName);
  44. return new MongoClient(connectionString);
  45. }
  46.  
  47. public static void main(String args[]) {
  48. MongoClient client = createMongoDBClient();
  49. //or
  50. //MongoClient client = createMongoDBClientWithURI();
  51. try {
  52. // 取得Collecton句柄
  53. MongoDatabase database = client.getDatabase(DEMO_DB);
  54. MongoCollection<Document> collection = database.getCollection(DEMO_COLL);
  55. // 插入数据
  56. Document doc = new Document();
  57. String demoname = "JAVA:" + UUID.randomUUID();
  58. doc.append("DEMO", demoname);
  59. doc.append("MESG", "Hello AliCoudDB For MongoDB");
  60. collection.insertOne(doc);
  61. System.out.println("insert document: " + doc);
  62. // 读取数据
  63. BsonDocument filter = new BsonDocument();
  64. filter.append("DEMO", new BsonString(demoname));
  65. MongoCursor<Document> cursor = collection.find(filter).iterator();
  66. while (cursor.hasNext()) {
  67. System.out.println("find document: " + cursor.next());
  68. }
  69. } finally {
  70. //关闭Client,释放资源
  71. client.close();
  72. }
  73. return ;
  74. }

2.我的控制台

参数里边基本都有

3.注意事项,如果使用的是单节点,请忽略节点参数

4.我的连接测试类如下

这样就能获取到连接了

二.开放公网连接

上面是内网连接地址,只能阿里云内网连接

下面是外网连接地址,默认情况下没有,如果不设置,外网是连接不到的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值