sql >> データベース >  >> NoSQL >> MongoDB

MongoClientインスタンスを作成するときに例外をキャッチする方法

    サーバー接続はデーモンスレッドで作成されます。非常に長い話ですが、Mongoクライアントの作成中に接続関連のエラーを確認することはできません。

    読み取りまたは書き込みを伴う最初の実際のデータベースを作成するときは、接続チェックを遅らせる必要があります。

    アイデアを得るためのデモンストレーション目的のためだけに。

    MongoClient mongoClient = new MongoClient("127.0.34.1", 89);
    DB db = mongoClient.getDB("test");
    try {
       db.addUser("user", new char[] {'p', 'a', 's', 's'});
    } catch(Exception e) { MongoTimeoutException exception}
    

    デーモンスレッドからのMongoSocketOpenException

    INFO: Exception in monitor thread while connecting to server 127.0.34.1:89
    com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:116)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.net.ConnectException: Connection refused: connect
    

    メインスレッドからのMongoTimeoutException

    Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.34.1:89, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, 
    caused by {java.net.ConnectException: Connection refused: connect}}]
    at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:375)
    

    したがって、MongoTimeoutExceptionを使用してtrycatchブロックでコードをラップします 接続関連のエラーをチェックするのに問題なく動作します。



    1. 条件付きRedisセット/最新バージョンでのみ更新しますか?

    2. pymongoを使用して値を更新するにはどうすればよいですか?

    3. 10.XX.XX.28:6379でRedisに接続できませんでした:不明なエラー-SpringBatchまたはWindowsマシンからのアクセス中に

    4. MongoDBの複数のドキュメントから配列を連結する方法は?