Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C#/.NET ドライバー
/

接続ターゲットの選択

このガイドでは、接続string と {0MongoClient オブジェクトを使用して、さまざまなタイプのMongoDB 配置に接続する方法を説明します。

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 SRVレコードを検索するには、接続文字列で SRV 接続形式を指定します。 さらに、 SRV 接続形式を有効にすると、 .NET/ C#ドライバーは、クライアント構成を変更することなく、新しいホストの再スキャンを自動的に再スキャンします。

次のコードは、 SRV 接続形式を使用する接続文字列を示しています。

var uri = "mongodb+srv://<hostname>"

SRV 接続形式の詳細については、 MongoDB Serverマニュアルの「 SRV 接続形式 」のエントリを参照してください。

このガイドで説明した型の詳細については、次のAPIドキュメントを参照してください。

戻る

MongoClient の作成

項目一覧