选择连接目标
Overview
在本指南中,您可以学习;了解如何使用连接string和 mongoc_client_t
对象连接到不同类型的MongoDB部署。
Atlas
要连接到MongoDB 上的Atlas 部署,请在连接string 中包含以下元素:
Atlas 集群的URL
您的 MongoDB 用户名
您的MongoDB密码
然后,将连接字符串传递给 mongoc_client_new()
函数。
提示
按照 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);
提示
当您连接到Atlas时,我们建议使用 Stable API客户端选项,以避免Atlas升级到新版本的MongoDB Server时发生重大更改。要学习;了解有关 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地址)和端口号。
您可以指定副本集集中的一个或多个主机,并指示C驾驶员执行自动发现以查找其他主机,而不是提供副本集主机的完整列表。要指示驾驶员执行自动发现,请执行以下操作之一:
将副本集的名称指定为
replicaSet
参数的值。将
false
指定为directConnection
参数的值。在副本集中指定多个主机。
以下示例使用示例连接 URI 连接到MongoDB副本集myreplset
,该副本集在三个不同主机的端口 27017
上运行:
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
属性的字符串表示,则当客户端连接到副本集成员时,列表可能为空。
API 文档
有关本指南中提及的对象和函数的更多信息,请参阅以下API文档: