1. 概要

このチュートリアルでは、MongoDBとの接続を確認する方法を学習します。

重要なのは、単一のMongoDBインスタンスに接続するには、MongoDBインスタンスのURIを指定する必要があるということです。

2. MongoShellを使用した接続の確認

このセクションでは、mongoshellコマンドを使用してMongoDBサーバーに接続します。 MongoDBに接続するさまざまなケースを検討します。

2.1. デフォルトポートでの接続の確認

デフォルトでは、MongoDBはポート27017で実行されますが、他のポートでも実行できます。単純なmongoコマンドを使用してMongoDBサーバーに接続できます。

$ mongo
MongoDB shell version v4.4.2
connecting to: mongodb://localhost:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b7f80a0c-c7b9-4aea-b34c-605b85e601dd") }
MongoDB server version: 4.0.1-rc0-2-g54f1582fc6

上記のコマンドでは、デフォルトで、MongoDBはポートを27017と見なしていました。 MongoDBサーバーがダウンしている場合、次のエラーが発生します。

$ mongo --host localhost --port 27017 admin
MongoDB shell version v4.4.2
connecting to: mongodb://localhost:27017/admin?compressors=disabled&gssapiServiceName=mongodb
Error: couldn't connect to server localhost:27017, connection attempt failed:
  SocketException: Error connecting to localhost:27017 :: caused by :: Connection refused :
[email protected]/mongo/shell/mongo.js:374:17
@(connect):2:6
exception: connect failed
exiting with code 1

この場合、サーバーに接続できなかったため、エラーが発生しました。

2.2. 保護されたMongoDBデータベースの接続を確認しています

MongoDBは認証で保護できます。 その場合、コマンドでユーザー名とパスワードを渡す必要があります。

$ mongo mongodb://baeldung:[email protected]:27017

ここでは、 username “ baeldung”と password “ baeldung”を使用して、ローカルホストで実行されているMongoDBに接続しました。

2.3. カスタムポートの接続を確認しています

カスタムポートでMongoDBを実行することもできます。 mongod.confファイルに変更を加えるだけです。 MongoDBが他のポートで実行されている場合は、コマンドでそのポートを指定する必要があります。

$ mongo mongodb://localhost:27001

ここで、mongoシェルでは、データベースサーバーの現在アクティブな接続を確認することもできます。

var status = db.serverStatus();
status.connections
{
    "current" : 21,
    "available" : 15979
}

serverStatus は、データベースプロセスの現在のステータスの概要を示すドキュメントを返します。 serverStatus コマンドを定期的に実行すると、MongoDBインスタンスに関する統計が収集されます。

3. Javaドライバコードを使用した接続の確認

これまで、シェルを使用してMongoDBとの接続を確認する方法を学びました。 次に、Javaドライバーコードを使用して同じことを調べてみましょう。

MongoClientOptions.Builder builder = MongoClientOptions.builder();
// builder settings
ServerAddress ServerAddress = new ServerAddress("localhost", 27017);
MongoClient mongoClient = new MongoClient(ServerAddress, builder.build());

try {
    System.out.println("MongoDB Server is Up:- "+mongoClient.getAddress());
    System.out.println(mongoClient.getConnectPoint());
    System.out.println(db.getStats());
} catch (Exception e) {
    System.out.println("MongoDB Server is Down");
} finally{
    mongoClient.close();
}

上記のコードでは、最初に MongoClientOption ビルダーを作成して、 MongoClient 接続の構成をカスタマイズし、次にサーバーアドレスを使用してMongoClient接続を作成しました。 MongoDBサーバーがローカルホストの27017ポートで実行されているとします。 そうしないと、MongoClientはエラーをスローします。

4. 結論

このチュートリアルでは、さまざまなリアルタイムのケースでMongoDBサーバーの接続を確認する方法を学びました。

まず、mongo defaultコマンドで接続を確認し、次に認証済みコマンドを使用して、カスタマイズされたポートで実行されているMongoDBサーバーに接続しました。 次に、MongoDBシェルとJavaドライバーコードの両方の接続を確認しました。

すべてのケースの例は、GitHubにあります。