接続ターゲットの選択
Overview
このガイドでは、接続string とmongoc_client_t
{0 オブジェクトを使用して、さまざまなタイプのMongoDB 配置に接続する方法を説明します。
Atlas
MongoDBAtlas上の 配置に接続するには、 接続string に次の要素を含めます。
Atlas クラスターの URL
MongoDB のユーザー名
MongoDB パスワード
次に、接続文字列を mongoc_client_new()
関数に渡します。
Tip
接続 Atlasを取得するには、 ドライバー接続ガイドstring に従ってください。
次のコードは、 Cドライバーを使用して Atlas クラスターに接続する方法を示しています。このコードでは、mongoc_server_api_new()
関数を使用して Stable APIバージョンも指定されます。
bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1)); bson_t reply = BSON_INITIALIZER; bson_error_t error; mongoc_client_t *client = NULL; // Create a new client client = mongoc_client_new ("mongodb+srv://<db_username>:<db_password>@<hostname:port>/?<options>"); // Set the version of the Stable API on the client mongoc_server_api_t *api = mongoc_server_api_new(MONGOC_SERVER_API_V1); if (!mongoc_client_set_server_api(client, api, &error)) { fprintf(stderr, "error: %s\n", error.message); goto cleanup; } // Send a ping to confirm a successful connection if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) { fprintf(stderr, "error: %s\n", error.message); goto cleanup; } printf ("Pinged your deployment. You successfully connected to MongoDB!\n"); cleanup: bson_destroy (&reply); bson_destroy (ping); mongoc_server_api_destroy (api); mongoc_client_destroy (client);
Tip
Atlas に接続するときは、Atlas がMongoDB Serverの新しいバージョンにアップグレードするときに重大な変更を回避するために、 Stable APIクライアントオプションを使用することをお勧めします。 Stable APIの詳細については、 Stable APIガイドをご覧ください。
ローカル配置
MongoDB のローカル配置に接続するには、ホスト名としてlocalhost
を使用します。 デフォルトでは、 mongod
プロセスはポート27017で実行されますが、これは配置に合わせてカスタマイズできます。
次のコードは、 Cドライバーを使用してローカルMongoDBデプロイに接続する方法を示しています。
bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1)); bson_t reply = BSON_INITIALIZER; bson_error_t error; mongoc_client_t *client = NULL; // Create a new client mongoc_uri_t *uri = mongoc_uri_new_with_error ("mongodb://localhost:27017", &error); if (!uri) { fprintf (stderr, "failed to parse URI, error: %s\n", error.message); goto cleanup; } client = mongoc_client_new_from_uri (uri); if (!client) { goto cleanup; } // Send a ping to confirm a successful connection if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) { fprintf(stderr, "error: %s\n", error.message); goto cleanup; } printf ("Pinged your deployment. You successfully connected to MongoDB!\n"); cleanup: bson_destroy (&reply); bson_destroy (ping); mongoc_client_destroy (client); mongoc_uri_destroy (uri);
レプリカセット
レプリカセットに接続するには、レプリカセットのノードのホスト名(または IP アドレス)とポート番号を指定します。
レプリカセット 内のホストの完全なリストを提供する代わりに、レプリカセットレプリカセット内の 1 つ以上のホストを指定し、 Cドライバーに自動検出を実行して他のホストを検索するように指示できます。ドライバーに自動検出を実行するように指示するには、次のいずれかのアクションを実行します。
replicaSet
パラメーターの値としてレプリカセットの名前を指定します。directConnection
パラメーターの値としてfalse
を指定します。レプリカセットに複数のホストを指定します。
次の例では、サンプル接続 URI を使用して、3 つの異なるホストのポート 27017
で実行中されているMongoDBレプリカセットmyreplset
に接続します。
bson_t *ping = BCON_NEW ("ping", BCON_INT32 (1)); bson_t reply = BSON_INITIALIZER; bson_error_t error; mongoc_client_t *client = NULL; // Create a new client client = mongoc_client_new ("mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset"); if (!client) { goto cleanup; } // Send a ping to confirm a successful connection if (!mongoc_client_command_simple (client, "admin", ping, NULL, &reply, &error)) { fprintf(stderr, "error: %s\n", error.message); goto cleanup; } printf ("Pinged your deployment. You successfully connected to MongoDB!\n"); cleanup: bson_destroy (&reply); bson_destroy (ping); mongoc_client_destroy (client);
注意
mongoc_client_new()
関数は 非ブロッキング です。レプリカセットに接続すると、クライアントがバックグラウンド スレッドを使用してレプリカセットに接続している間に、コンストラクターはすぐに返します。
mongoc_client_t
オブジェクトを作成し、その nodes
属性の string 表現をすぐに出力すると、クライアントがレプリカセット メンバーに接続している間はリストが空になることがあります。
API ドキュメント
このガイドで言及されているオブジェクトと関数の詳細については、次のAPIドキュメントを参照してください。