java MongoClient何时与数据库建立连接?

java MongoClient何时与数据库建立连接?,java,mongodb,Java,Mongodb,我正在使用JavaMongo驱动程序3.2,我正试图弄清楚什么应该有多个实例,什么应该在应用程序中持久化 因此,例如,MongoClient说应用程序应该只有一个实例。它还说它建立了一个连接池。这很好。这些连接实际上是什么时候建立的?我想确保我能有效地使用游泳池 当我执行MongoClient#getDataBase时,是否建立了到数据库的连接MongoDatabase#getCollection?或者在我对集合本身执行操作时,例如.find 应该省掉什么?我应该有多个数据库实例吗?收藏?还是仅

我正在使用JavaMongo驱动程序3.2,我正试图弄清楚什么应该有多个实例,什么应该在应用程序中持久化

因此,例如,
MongoClient
说应用程序应该只有一个实例。它还说它建立了一个连接池。这很好。这些连接实际上是什么时候建立的?我想确保我能有效地使用游泳池

当我执行
MongoClient#getDataBase
时,是否建立了到数据库的连接<代码>MongoDatabase#getCollection?或者在我对集合本身执行操作时,例如.find

应该省掉什么?我应该有多个数据库实例吗?收藏?还是仅仅是客户


我主要是想确保我不会将自己限制在一个连接上,但也不会不必要地向数据库发送垃圾邮件。

每个应用程序只发送一次实例就可以了。看起来很清楚。编辑:我对编写的理解是,当调用
MongoClient.getDB()时
是当您连接时,确保通过源代码进行解析(如果可以查看确切的时刻)。编辑2:在此处添加了指向MongoDB Java驱动程序的链接,特别是您要检查的类,它扩展了
Mongo.class
,而
.getDB()就是在这个类中位于;在这个方法中,他们检查数据库缓存,如果没有,他们创建一个新的
DB.class
实例。运行完代码后,它会出现在
Mongo.class
构造函数中,因此当您调用
new MongoClient()时他们调用连接器.start()

从他们的页面

// To directly connect to a single MongoDB server (note that this will not auto-discover the primary even
// if it's a member of a replica set:
MongoClient mongoClient = new MongoClient();
// or
MongoClient mongoClient = new MongoClient( "localhost" );
// or
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// or, to connect to a replica set, with auto-discovery of the primary, supply a seed list of members
MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),
                                      new ServerAddress("localhost", 27018),
                                      new ServerAddress("localhost", 27019)));

DB db = mongoClient.getDB( "mydb" );
此时,db对象将是到MongoDB服务器的连接 对于指定的数据库。使用它,您可以执行进一步的操作

MongoClient类被设计成线程安全的,并在多个用户之间共享 线程。通常,只为给定数据库创建一个实例 群集并在整个应用程序中使用它

重要的

创建多个MongoClient实例时:

All resource usage limits (max connections, etc) apply per MongoClient instance
To dispose of an instance, make sure you call MongoClient.close() to clean up resources

谢谢你的回答!如果您可以添加一些关于连接池中默认连接数以及何时关闭连接或自我管理等的信息,那么这将非常有用@你也完全有能力做这项研究。我只是在他们的文档中查找所有内容,或者浏览开源代码并阅读正在发生的事情。
All resource usage limits (max connections, etc) apply per MongoClient instance
To dispose of an instance, make sure you call MongoClient.close() to clean up resources