Docs Menu
Docs Home
/ / /
Kotlin コルーチン
/ /

MongoDB に接続する

このガイドでは、 Kotlin ドライバーを使用して MongoDB インスタンスまたはレプリカセットに接続する方法を学習できます。

Atlas クラスターに接続するためのサンプル コードを表示するか、 MongoClientクラスと接続 URI の詳細を学習するために読み進めることができます。

MongoClient クラスを使用して MongoDB に接続し、通信することができます。

MongoClient を構築するには、MongoClient.create() メソッドを使用します。

重要

クライアントの再利用

MongoClient はデータベースへのスレッドセーフな接続のプールを表すため、ほとんどのアプリケーションで必要なインスタンスは、複数のスレッド間でも、MongoClient の 1 つだけです。

ドライバーで接続プールがどのように機能するかについて詳しくは、 FAQ ページ をご覧ください。

最大接続数などのすべてのリソース使用制限は、個々の MongoClient インスタンスに適用されます。

MongoClient の動作を制御するために使用できるさまざまな設定の詳細については、「MongoClient 設定」のガイドを参照してください。

Tip

インスタンスが不要になった場合は、常に MongoClient.close() を呼び出してリソースをクリーンアップします。

接続 URI は、ドライバが MongoDB 配置に接続するための指示のセットを提供します。このセットで、ドライバーに MongoDB への接続方法と接続中の動作を指示します。次の図は、サンプル接続 URI の各部分について説明しています。

接続stringの部分図

この図では、プロトコルに標準接続string形式mongodb を使用しています。 配置の柔軟性を高め、クライアントを再構成せずにサーバーをローテーションで変更する機能が必要な場合は、 DNS シード リスト接続形式mongodb+srvを使用することもできます。

注意

MongoDB Atlasに配置している場合は、Atlas ドライバー接続ガイド Kotlinを参照し、言語ドロップダウンから {3 を選択して接続string を取得します。

パスワードベースの認証メカニズムを使用している場合、接続 URI の次の部分には認証情報が含まれます。 userの値をデータベースユーザー名に置き換え、 passの値をデータベースユーザーのパスワードに置き換えます。 認証メカニズムで認証情報が必要ない場合は、接続 URI のこの部分を省略します。

接続 URI の次の部分では、ホスト名または IP アドレスを指定し、その後に MongoDB インスタンスのポートを指定します。この例では、sample.host はホスト名を表し、27017 はポート番号を表します。これらの値を置き換えて、MongoDB インスタンスを参照します。

接続 URI の最後の部分には、パラメータとして接続オプションが含まれます。 この例では、 maxPoolSize=20w=majorityの 2 つの接続オプションを設定しています。 接続オプションの詳細については、このガイドの「接続オプション 」セクションに進んでください。

Atlas 上の MongoDB 配置に接続するには、クライアントを作成します。MongoClientSettings オブジェクトを MongoClient.create() メソッドに渡すことで、接続文字列とその他のクライアント オプションを使用するクライアントを作成できます。

MongoClientSettings オブジェクトをインスタンス化するには、ビルダ メソッドを使用して接続文字列とその他のクライアント オプションを指定し、build() メソッドを呼び出します。接続 URI を指定するには、applyConnectionString() メソッドをビルダにチェーンします。

新しいサーバー バージョンにアップグレードするときに重大な変更を回避するために、Stable API バージョンのクライアント オプションを設定できます。 Stable API 機能について詳しくは、「 Stable API 」ページをご覧ください。

次のコードは、Atlas 上の MongoDB 配置に接続するときに接続文字列と Stable API クライアント オプションを指定し、接続が成功したことを確認する方法を示します。

// Replace the placeholder with your Atlas connection string
val uri = "<connection string>"
// Construct a ServerApi instance using the ServerApi.builder() method
val serverApi = ServerApi.builder()
.version(ServerApiVersion.V1)
.build()
val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString(uri))
.serverApi(serverApi)
.build()
// Create a new client and connect to the server
val mongoClient = MongoClient.create(settings)
val database = mongoClient.getDatabase("admin")
try {
// Send a ping to confirm a successful connection
val command = Document("ping", BsonInt64(1))
val commandResult = database.runCommand(command)
println("Pinged your deployment. You successfully connected to MongoDB!")
} catch (me: MongoException) {
System.err.println(me)
}

Atlas でホストされていない単一の MongoDB 配置またはレプリカセットに接続する場合は、次のセクションで接続方法を確認してください。

Atlas クラスターを使用する代わりに、開発目的でローカル コンピューター上で MongoDB Server を実行する必要がある場合は、次の手順を完了する必要があります。

  1. MongoDB Server の Communityバージョン または Enterprise バージョンをダウンロードします。

  2. MongoDB Serverをインストールして構成します。

  3. サーバーを起動します。

重要

MongoDB サーバーを悪意のある攻撃から常に保護します。セキュリティ推奨事項のリストについては、「セキュリティ チェックリスト」を参照してください。

MongoDB Serverを正常に開始したら、ドライバー接続コードで接続文字列を指定します。

MongoDB Server がローカルで実行されている場合は、接続文字列 "mongodb://localhost:<port>" を使用できます。ここで、<port> は、着信接続をリッスンするようにサーバーに設定したポート番号です。

別のホスト名または IP アドレスを指定する必要がある場合は、接続文字列に関するサーバー マニュアルのエントリを参照してください。

サーバーに接続できるかどうかをテストするには、MongoDB Atlas への接続に記載のコード例の接続文字列を置き換えて実行します。

MongoDB レプリカセットの配置は、同じデータ セットを保存する接続されたインスタンスのグループです。このインスタンスの構成は、データの冗長性と高いデータ可用性を提供します。

レプリカセット配置に接続するには、レプリカセットのノードのホスト名(または IP アドレス)とポート番号を指定します。

レプリカセット内のホストの完全なリストを提供できない場合は、レプリカ内のホストの 1 つまたはサブセットを指定し、次のいずれかの方法で自動検出を実行するようにドライバーに指示できます。

  • replicaSet パラメータの値としてレプリカセットの名前を指定

  • directConnection パラメーターの値として false を指定

  • レプリカセットに複数のホストを指定

Tip

レプリカセットのホストのサブセットを指定することもできますが、レプリカセットのすべてのホストを含めることで、ホストの 1 つが到達できない場合でもドライバが接続を確立できるようにします。

次の例は、ConnectionString クラスまたは MongoClientSettings クラスを使用して、MongoClient インスタンスに複数のホストを指定する方法を示しています。使用するクラスに対応するタブを選択します。

val connectionString = ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/")
val mongoClient = MongoClient.create(connectionString)
val seed1 = ServerAddress("host1", 27017)
val seed2 = ServerAddress("host2", 27017)
val seed3 = ServerAddress("host3", 27017)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(
listOf(seed1, seed2, seed3)
)
}
.build()
val mongoClient = MongoClient.create(settings)

戻る

接続ガイド