连接字符串中的MongoDB选项被解释为数据库名称

时间:2016-11-17 20:44:37

标签: mongodb morphia

我正在尝试在documentation之后的MongoDB中设置maxPoolSize via连接字符串。这是我的连接字符串:

mongodb://localhost:27017/databaseName?maxPoolSize=200

但是,我没有使用 maxPoolSize 的数据库 databaseName 等于200,而是获得了一个名为 databaseName的数据库?maxPoolSize = 200 。也就是说,Mongo将所有内容(名称+选项)作为数据库名称。

一些信息:

  • Mongo版本:3.2.10
  • 使用Morphia 1.1.0进行连接

我很乐意提供更多信息。

2 个答案:

答案 0 :(得分:1)

如果你正在做

MongoClient client = new MongoClient(
"mongodb://localhost:27017/databaseName?maxPoolSize=200");

然后不要那样做,而是做如下,

MongoClient client = new MongoClient(
new MongoClientURI(
"mongodb://localhost:27017/databaseName?maxPoolSize=200"));

因为你需要告诉mongo你在连接字符串中传递了一些选项。

如果您认为我误解了您的问题。请在您尝试连接的地方发布一段代码。

答案 1 :(得分:1)

你可以尝试这样的事情。

MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017/databaseName?maxPoolSize=200");
MongoClient mongoClient = new MongoClient(uri);
Morphia morphia = new Morphia();
Datastore datastore = morphia.createDatastore(mongoClient, "dbname");

可选地

MongoClientOptions.Builder options = new MongoClientOptions.Builder();
//set your connection option here.
options.connectionsPerHost(200); //max pool size
MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017), options.build());
Morphia morphia = new Morphia();
Datastore datastore = morphia.createDatastore(mongoClient, "dbname");