通过 java 应用程序连接在 mongolab 中创建的 mongodb

Posted

技术标签:

【中文标题】通过 java 应用程序连接在 mongolab 中创建的 mongodb【英文标题】:connecting a mongodb created in mongolab through a java application 【发布时间】:2013-02-09 17:13:05 【问题描述】:

我在 mongolab 中创建了一个 mongodb 实例 它为我提供了一个连接 URI。

   mongodb://<dbuser>:<dbpassword>@ds041177.mongolab.com:41177/myclouddb

我使用以下 java 代码连接到我的数据库-

      Mongo m = new Mongo();
     com.mongodb.DBAddress dba=new DBAddress("mongodb://admin:password@ds041177.mongolab.com:41177/myclouddb");
        m.connect(dba);

但这会引发 NumberFormatException

   java.lang.NumberFormatException: For input string: ""

我做错了什么?

【问题讨论】:

【参考方案1】:

这是一个 MongoDB URI。

与其将其传递给DBAddress,不如将​​其传递给MongoURI,然后将其传递给Mongo 实例。

String textUri = "mongodb://admin:password@ds041177.mongolab.com:41177/myclouddb";
MongoURI uri = new MongoURI(textUri);
Mongo m = new Mongo(uri);

您还应该考虑升级到latest 驱动程序并切换到MongoClient 类,因为Mongo 类现已弃用。

String textUri = "mongodb://admin:password@ds041177.mongolab.com:41177/myclouddb";
MongoClientURI uri = new MongoClientURI(textUri);
MongoClient m = new MongoClient(uri);

【讨论】:

有没有可能在 MongoURI 中设置两个具有用户名和密码的主机 您应该能够将主机/端口列表添加为逗号分隔列表:mongodb://admin:password@ds041177.mongolab.com:41177,ds041178.mongolab.com:41177/我的云数据库。我不确定所有驱动程序都支持这种格式,但它在规范中:docs.mongodb.org/manual/reference/connection-string

以上是关于通过 java 应用程序连接在 mongolab 中创建的 mongodb的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上的 NodeJS 中,MongoDB 与 MongoLab 的连接超时

mongolab和heroku之间的连接需要ssl吗?

Heroku + MongoLab 插件与 Node.js 应用程序的连接错误 - 错误:连接 ECONNREFUSED 127.0.0.1:27017

Mongolab连接错误

Mongolab 与 MongodbShell 连接失败

Mongolab 与 MongodbShell 连接失败