Connection to non existing mongodb server does not throw exception

风格不统一 提交于 2020-04-11 04:46:46

问题


I'm playing around a bit with the MongoDB driver for Java. So I just created a simple application to connect to a MongoDB server and select a database.
So I created an instance of MongoClient and selected a 'DB':

try
{
    MongoClient client = new MongoClient("localhost", 27017);
    DB database = client.getDB("example");
}catch(Exception e){
    e.printStackTrace();
}

Because of the fact that there is no running instance of mongod on my machine, I expected that client would throw an Exception. Unfortunately that isn't the case.
Even when selecting the database nothing happens. It just behaves like if there was a running mongod instance.

I looked into the documentation about the Java driver but couldn't find anything about it. Same with Google.
Is there anything I missed?

I'm using the latest MongoDB driver (version 2.12.2) from the official website.


回答1:


It is expected behaviour. The driver does not attempt to connect to the database until it is needed. If you try the mongo shell, you do not get the error if the database does not exist.

When you try to insert a document into a non-existent collection it is created for you automatically and that is when the connection is lazily established. It is first when you actually perform some db operation (find(), insert() etc.) that the connection is checked for.




回答2:


Try doing an insert to a collection. Connections are lazily initialized and validated.



来源:https://stackoverflow.com/questions/24616695/connection-to-non-existing-mongodb-server-does-not-throw-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!