MongoDB に接続する
このガイドでは、Java ドライバーを使用して MongoDB Atlas 配置、MongoDB インスタンス、またはレプリカセットに接続する方法を学習します。
Atlas クラスターに接続する ためのサンプル コードを表示するか、 MongoClient
クラスと接続 URI の詳細を学習するために読み進めることができます。
MongoClient
MongoClient
クラスを使用して MongoDB に接続し、通信することができます。
MongoClient
を構築するには、MongoClients.create()
メソッドを使用します。
重要
クライアントの再利用
各 MongoClient
はデータベースへのスレッドセーフな接続のプールを表すため、ほとんどのアプリケーションで必要なインスタンスは、複数のスレッド間でも、MongoClient
の 1 つだけです。ドライバーで接続プールがどのように機能するかについて詳しくは、「FAQ」ページを参照してください。
最大接続数などのすべてのリソース使用制限は、個々の MongoClient
インスタンスに適用されます。
MongoClient
の動作を制御するために使用できるさまざまな設定の詳細については、「MongoClient 設定」のガイドを参照してください。
Tip
インスタンスが不要になった場合は、常に MongoClient.close()
を呼び出してリソースをクリーンアップします。
接続URI
接続 URI は、ドライバが MongoDB 配置に接続するための指示のセットを提供します。このセットで、ドライバーに MongoDB への接続方法と接続中の動作を指示します。次の図は、サンプル接続 URI の各部分について説明しています。
この例では、DNS SRV レコードを持つ Atlas MongoDB 配置に接続します。 詳細については、 DNS シードリスト接続形式のドキュメントを参照してください。 この形式を使うと、柔軟な配置が可能になるとともに、クライアントを再構成しなくてもサーバーをローテーションして変更することができます。
注意
MongoDB Atlasに配置している場合は、 Atlasドライバー接続ガイドを参照し、言語ドロップダウンからJavaを選択して 接続stringを取得します。
DNS SRV アドレスを持たないインスタンスまたはレプリカセットに接続する場合は、プロトコルに標準接続文字列形式を指定するmongodb
を使用する必要があります。
パスワードベースの認証メカニズムを使用している場合は、プロトコルの後、接続文字列に認証情報が含まれます。user
の値をユーザー名に、pass
の値をパスワードに置き換えます。認証メカニズムで認証情報が必要ない場合は、接続 URI のこの部分を省略します。
接続 URI の次の部分では、ホスト名または IP アドレスを指定し、その後に MongoDB インスタンスのポートを指定します。この例では、sample.host
はホスト名を表し、27017
はポート番号を表します。これらの値を置き換えて、MongoDB インスタンスを参照します。
接続 URI の最後の部分には、パラメータとして接続オプションが含まれます。 この例では、 maxPoolSize=20
とw=majority
の 2 つの接続オプションを設定しています。 接続オプションの詳細については、このガイドの「接続オプション 」セクションに進んでください。
Atlas 接続例
Atlas 上の MongoDB 配置に接続するには、クライアントを作成します。MongoClientSettings
オブジェクトを MongoClients.create()
メソッドに渡すことで、接続文字列とその他のクライアント オプションを使用するクライアントを作成できます。
MongoClientSettings
オブジェクトをインスタンス化するには、ビルダ メソッドを使用して接続文字列とその他のクライアント オプションを指定し、build()
メソッドを呼び出します。接続 URI を指定するには、applyConnectionString()
メソッドをビルダにチェーンします。
MongoDB Server の新しいバージョンにアップグレードするときに重大な変更を回避するために、Stable API バージョンのクライアント オプションを設定できます。Stable API 機能について詳しくは、「Stable API」ページを参照してください。
次のコードは、Atlas 上の MongoDB 配置に接続するときに接続文字列と Stable API クライアント オプションを指定し、接続が成功したことを確認する方法を示します。
package fundamentals; import com.mongodb.*; import org.bson.BsonDocument; import org.bson.BsonInt64; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; public class MongoClientConnectionExample { public static void main(String[] args) { // Replace the placeholder with your Atlas connection string String uri = "<connection string>"; // Construct a ServerApi instance using the ServerApi.builder() method ServerApi serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build(); MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(uri)) .serverApi(serverApi) .build(); // Create a new client and connect to the server try (MongoClient mongoClient = MongoClients.create(settings)) { MongoDatabase database = mongoClient.getDatabase("admin"); try { // Send a ping to confirm a successful connection Bson command = new BsonDocument("ping", new BsonInt64(1)); Document commandResult = database.runCommand(command); System.out.println("Pinged your deployment. You successfully connected to MongoDB!"); } catch (MongoException me) { System.err.println(me); } } } }
MongoDB に接続する他の方法
Atlas でホストされていない単一の MongoDB 配置またはレプリカセットに接続する場合は、次のセクションで接続方法を確認してください。
ローカル マシン上の MongoDB 配置への接続
開発目的で、MongoDB Atlas クラスターを使用する代わりに、ローカル マシンで MongoDB 配置を実行する必要がある場合は、次の手順を完了する必要があります。
MongoDB Server の Communityバージョン または Enterprise バージョンをダウンロードします。
MongoDB Serverをインストールして構成します。
配置を開始します。
重要
MongoDB 配置を悪意のある攻撃から常に保護します。 セキュリティ推奨事項のリストについては、「セキュリティ チェックリスト」を参照してください。
MongoDB 配置を正常に開始したら、ドライバー接続コードで接続文字列を指定します。
MongoDB 配置がローカルで実行されている場合は、接続文字列 "mongodb://localhost:<port>"
を使用できます。ここで、<port>
は、着信接続をリッスンするようにサーバーに設定したポート番号です。
別のホスト名または IP アドレスを指定する必要がある場合は、接続文字列に関するサーバー マニュアルのエントリを参照してください。
配置に接続できるかどうかをテストするには、 への接続 に 記載のコード例の接続string MongoDB Atlasを置き換えて実行します。
レプリカセットへの接続
MongoDB レプリカセットの配置は、同じデータ セットを保存する接続されたインスタンスのグループです。このインスタンスの構成は、データの冗長性と高いデータ可用性を提供します。
レプリカセット配置に接続するには、レプリカセットのノードのホスト名(または IP アドレス)とポート番号を指定します。
レプリカセット内のホストの完全なリストを提供できない場合は、レプリカ内のホストの 1 つまたはサブセットを指定し、次のいずれかの方法で自動検出を実行するようにドライバーに指示できます。
replicaSet
パラメータの値としてレプリカセットの名前を指定directConnection
パラメーターの値としてfalse
を指定レプリカセットに複数のホストを指定
Tip
レプリカセットのホストのサブセットを指定することもできますが、レプリカセットのすべてのホストを含めることで、ホストの 1 つが到達できない場合でもドライバが接続を確立できるようにします。
次の例は、ConnectionString
クラスまたは MongoClientSettings
クラスを使用して、MongoClient
インスタンスに複数のホストを指定する方法を示しています。使用するクラスに対応するタブを選択します。
ConnectionString connectionString = new ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/"); MongoClient mongoClient = MongoClients.create(connectionString);
ServerAddress seed1 = new ServerAddress("host1", 27017); ServerAddress seed2 = new ServerAddress("host2", 27017); ServerAddress seed3 = new ServerAddress("host3", 27017); MongoClientSettings settings = MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(seed1, seed2, seed3))) .build(); MongoClient mongoClient = MongoClients.create(settings);