Overview
このガイドでは、接続string と {0MongoClient
オブジェクトを使用して、さまざまなタイプのMongoDB 配置に接続する方法を説明します。
Atlas
MongoDBAtlas上の 配置に接続するには、 接続string に次の要素を含めます。
Atlas クラスターの URL
MongoDB ユーザー名
MongoDB パスワード
次に、接続stringを MongoClient
コンストラクターに渡します。
Tip
接続 Atlasを取得するには、 ドライバー接続ガイドstring に従ってください。
Atlas に接続するときは、Atlas が MongoDB Server の新しいバージョンにアップグレードするときに重大な変更を回避するために、 Stable API クライアント オプションを使用することをお勧めします。 Stable API 機能について詳しくは、 Stable APIガイドをご覧ください。
次のコードは、 .NET/ C#ドライバーを使用して Atlas クラスターに接続する方法を示しています。このコードでは、Stable APIバージョンを指定するために server_api
オプションも使用されます。
using MongoDB.Driver; using MongoDB.Bson; // Replace the placeholder with your Atlas connection string const string connectionUri = "<connection string>"; var settings = MongoClientSettings.FromConnectionString(connectionUri); // Sets the ServerApi field of the settings object to Stable API version 1 settings.ServerApi = new ServerApi(ServerApiVersion.V1); // Creates a new client and connects to the server var client = new MongoClient(settings); // Sends a ping to confirm a successful connection try { var result = client.GetDatabase("admin").RunCommand<BsonDocument>(new BsonDocument("ping", 1)); Console.WriteLine("Pinged your deployment. You successfully connected to MongoDB!"); } catch (Exception ex) { Console.WriteLine(ex);}
ローカル配置
MongoDB のローカル配置に接続するには、ホスト名としてlocalhost
を使用します。 デフォルトでは、 mongod
プロセスはポート27017で実行されますが、これは配置に合わせてカスタマイズできます。
次のコードは、 .NET/ C#ドライバーを使用してローカルMongoDBデプロイに接続する方法を示しています。
using MongoDB.Driver; // Sets the connection URI const string connectionUri = "mongodb://localhost:27017"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
レプリカセット
レプリカセットに接続するには、IP 接続 でレプリカセットのホスト名(またはstring アドレス)とポート番号を指定します。
次のコードは、 .NET/ C#ドライバーを使用して 3 つのホストを含むレプリカセットに接続する方法を示しています。
using MongoDB.Driver; // Sets the connection URI than includes the list of hosts in the replica set const string connectionUri = "mongodb://host1:27017,host2:27017,host3:27017"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
注意
Docker のレプリカセット
レプリカセットがDockerで実行される場合、公開されるMongoDBエンドポイントは 1 つだけです。この場合、レプリカセットは検出できません。接続 URI で directConnection=false
を指定するか、このオプションを未設定のままにすると、アプリケーションがその接続に接続できなくなる可能性があります。
テスト環境または開発環境では、directConnection=true
を指定してレプリカセットに接続できます。本番環境では、Docker 仮想ネットワークの外部から各 MongoDB インスタンスにアクセスできるようにクラスターを構成することを推奨します。
レプリカセット内のホストの完全なリストを提供できない場合は、レプリカセット内の 1 つ以上のホストを指定し、 .NET/ C#ドライバーに自動検出を実行して他のホストを検索するように指示できます。ドライバーに自動検出を実行するように指示するには、次のいずれかのアクションを実行します。
replicaSet
パラメーターの値としてレプリカセットの名前を指定します。directConnection
パラメータの値としてfalse
を指定します。このパラメータを省略することもできます。デフォルトはfalse
です。レプリカセットに複数のホストを指定します。
次の例では、ドライバーはサンプル接続 URI を使用して、host1
を含む 3 つの異なるホストのポート 27017
で実行されている MongoDB レプリカセット sampleRS
に接続します。
using MongoDB.Driver; // Sets the connection URI than includes the replica set name const string connectionUri = "mongodb://host1:27017/?replicaSet=sampleRS"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
注意
レプリカセット名の指定
ドライバーは、すべてのノードのホスト名またはレプリカセット名を指定せずにレプリカセットノードを自動的に検出できますが、レプリカセットが正しく初期化されない重大なケースを回避するために、レプリカセット名を指定することをお勧めします。
.NET/ C#ドライバーは、クライアントの localThresholdMS
値内でアクセス可能な配置全体で操作を均等に負荷分散します。.NET/ C#ドライバーが複数のMongoDB配置にわたって操作を負荷分散する方法の詳細については、カスタマイズ サーバー選択ガイドを参照してください。
注意
MongoClient
コンストラクターは非ブロッキングです。 レプリカセットに接続すると、クライアントがバックグラウンド スレッドを使用してレプリカセットに接続している間に、コンストラクターはすぐに返します。
MongoClient
を作成し、その nodes
属性の string 表現をすぐに出力すると、クライアントがレプリカセットメンバーに接続している間はリストが空になることがあります。
単一サーバーへの接続
レプリカセットではなく、レプリカレプリカセット内の単一のサーバーに接続するには、directConnection
接続オプションの値として false
を指定します。これは、MongoClient
コンストラクターに引数を渡す方法と、接続文字列のパラメーターを使用する方法の 2 つがあります。 対応するコードを表示するには、MongoClientSettings タブまたは Connection Stringタブを選択します。
using MongoDB.Driver; var settings = MongoClientSettings.FromConnectionString("mongodb://host1:27017"); settings.DirectConnection = true; var client = new MongoClient(settings);
using MongoDB.Driver; const string connectionUri = "mongodb://host1:27017/?directConnection=true"; var client = new MongoClient(connectionUri);
DNS サービス検出
DNS サービス検出を使用して接続しているサービスの DNS SRVレコードを検索するには、接続文字列で SRV 接続形式を指定します。 さらに、 SRV 接続形式を有効にすると、 .NET/ C#ドライバーは、クライアント構成を変更することなく、新しいホストの再スキャンを自動的に再スキャンします。
次のコードは、 SRV 接続形式を使用する接続文字列を示しています。
var uri = "mongodb+srv://<hostname>"
SRV 接続形式の詳細については、 MongoDB Serverマニュアルの「 SRV 接続形式 」のエントリを参照してください。
API ドキュメント
このガイドで説明した型の詳細については、次のAPIドキュメントを参照してください。