连接mongo atlas来玩框架应用程序



我可以成功地连接一个独立集群到我的Play框架(2.7)应用程序(与ReactiveMongo 0.17.1),我可以连接Mongo指南针到我的副本集(创建在MongoDb Atlas),但我有很大的问题连接我的MongoDb Atlas副本集到我的Play框架应用程序。这应该是在application.conf文件中使用connection string的情况;例如

mongodb.uri = <connectionString>

事实上,ReactiveMongo文档将其描述为:

mongodb.uri = "mongodb+srv://${ATLAS_USERNAME}:${ATLAS_PASSWORD}@cluster0-p8ccg.mongodb.net/test?retryWrites=true&w=majority"

  • 三个变量${ATLAS_USERNAME},${ATLAS_PASSWORD}&test(默认数据库名)

MongoDb Atlas文档(当登录时)描述connection string是这样制定的:

mongodb+srv://<username>:<password>@cluster0.pwe0y.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

  • 三个变量<username>,<password>&myFirstDatabase(默认数据库名)

所以除了地址的一些变量差异(我使用了Atlas中的地址,因为它与我的详细信息不同)

反复出现的错误如下:

[error] r.c.a.MongoDBSystem - [Supervisor-1/Connection-2] Fails to send a isMaster request to cluster0-shard-00-01.pwe0y.mongodb.net:27017 (channel #ac1cfe76) javax.net.ssl.SSLException: SSLEngine closed already at reactivemongo.io.netty.handler.ssl.SslHandler.wrap(...)(Unknown Source)

注意事项:

  • 我有node.js v12.14.1
  • 用户被授予适当的权限
  • 选项参数也已经过URL encoded测试
  • 我的ip地址在IP Access List(在蒙古地图集)

对于连接,您应该像这样传递mongodb.uri:

mongodb.uri = "mongodb+srv://${ATLAS_USERNAME}:${ATLAS_PASSWORD}@cluster0-p8ccg.mongodb.net"

不要使用完整的连接字符串URL作为连接。

如果Atlas没有在DNS SRV中设置authSource=admin,请确保在连接URI中添加?authSource=admin

还需要注意的是,0.17已经发布两年多了,不会得到修复。