Docs 菜单
Docs 主页
/ / /
C++ 驱动程序

连接至 MongoDB

在此页面上

  • Overview
  • 示例应用程序
  • 连接
  • Atlas
  • 本地部署
  • 副本集(Replica Set)
  • 传输层安全性 (TLS)
  • 启用 TLS
  • 指定证书颁发机构 (CA) 文件
  • 禁用 OCSP 检查
  • 指定证书撤销列表 (CRL)
  • 出示客户端证书
  • 提供证书密钥文件密码
  • 允许不安全的 TLS
  • 禁用证书验证
  • 禁用主机名验证
  • 网络压缩
  • 压缩算法
  • zlibCompressionLevel
  • Stable API

本页包含的代码示例展示了如何使用各种设置将C++应用程序连接到MongoDB 。

提示

要了解有关此页面上的连接选项的更多信息,请参阅每个部分中提供的链接。

要使用此页面中的连接示例,请将代码示例复制到示例应用程序或您自己的应用程序中。 请务必将代码示例中的所有占位符(例如 <hostname> )替换为 MongoDB 部署的相关值。

您可以使用以下示例应用程序来测试本页上的代码示例。 要使用示例应用程序,请执行以下步骤:

  1. 确保您已将C++驾驶员安装在项目可以导入的位置。

  2. 复制以下代码,并将其粘贴到项目中的新.cpp文件中。

  3. 从本页复制代码示例,并将其粘贴到文件的突出显示部分。

1#include <bsoncxx/json.hpp>
2
3#include <mongocxx/client.hpp>
4#include <mongocxx/exception/exception.hpp>
5#include <mongocxx/instance.hpp>
6#include <mongocxx/uri.hpp>
7
8#include <iostream>
9
10int main()
11{
12 mongocxx::instance instance;
13
14 try
15 {
16 // Start example code here
17
18 // End example code here
19
20 auto admin = client["admin"];
21 admin.run_command(bsoncxx::from_json(R"({ "ping": 1 })"));
22
23 std::cout << "Successfully pinged the MongoDB server." << std::endl;
24 }
25 catch (const mongocxx::exception &e)
26 {
27 std::cout << "An exception occurred: " << e.what() << std::endl;
28 return EXIT_FAILURE;
29 }
30
31 return EXIT_SUCCESS;
32}

以下代码显示了如何连接到MongoDB Atlas部署:

mongocxx::uri uri("<Atlas connection string>");
mongocxx::client client(uri);

要学习;了解有关连接到Atlas部署的更多信息,请参阅连接目标指南中的 Atlas

以下代码显示了如何连接到本地MongoDB 部署:

mongocxx::uri uri("mongodb://localhost:27017/");
mongocxx::client client(uri);

要学习;了解有关连接到本地部署的更多信息,请参阅连接目标指南中的本地部署

以下代码显示了如何连接到副本集部署:

mongocxx::uri uri("mongodb://<replica set member>:<port>/?replicaSet=<replica set name>");
mongocxx::client client(uri);

要学习;了解有关连接到副本集的更多信息,请参阅《连接目标》指南中的副本集

以下代码展示了如何为MongoDB实例的连接启用TLS:

mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri);

要了解有关启用 TLS 的更多信息,请参阅 TLS 配置指南中的启用 TLS

以下代码演示如何指定 CA文件的路径以连接到MongoDB实例:

mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.pem_file("/path/to/file.pem");
client_options.tls_opts(tls_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri, client_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsCAFile=/path/to/file.pem");

要了解有关指定 CA 文件的更多信息,请参阅 TLS 配置指南中的指定 CA 文件

以下代码演示如何阻止驾驶员联系 OCSP 端点:

mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsDisableOCSPEndpointCheck=true");
mongocxx::client client(uri);

要了解有关禁用 OCSP 检查的更多信息,请参阅 TLS 配置指南中的OCSP

以下代码演示如何指示驾驶员根据 CRL 验证服务器的证书:

mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.crl_file("<path to your CRL file>");
client_options.tls_opts(tls_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri, client_options);

要了解有关指定 CRL 的更多信息,请参阅 TLS 配置指南中的证书吊销列表

以下代码显示如何指定驾驶员向MongoDB 部署提供的客户端证书:

mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.pem_file("/path/to/file.pem");
client_options.tls_opts(tls_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri, client_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/file.pem");

要了解有关指定客户端证书的更多信息,请参阅 TLS 配置指南中的提供客户端证书

以下代码演示如何指定客户端证书的密码:

mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.pem_file("/path/to/file.pem");
tls_options.pem_password("<password>");
client_options.tls_opts(tls_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri, client_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/file.pem&tlsCertificateKeyFilePassword=<password>");

要了解有关提供密钥文件密码的更多信息,请参阅 TLS 配置指南中的提供密钥密码

以下代码展示了如何禁用证书验证:

mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true");
mongocxx::client client(uri);

要了解有关允许不安全 TLS 的更多信息,请参阅 TLS 配置指南中的允许不安全 TLS

以下代码显示如何禁用证书验证:

mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.allow_invalid_certificates(true);
client_options.tls_opts(tls_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true");
mongocxx::client client(uri, client_options);
mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true");

要了解有关禁用证书验证的更多信息,请参阅 TLS 配置指南中的允许不安全的 TLS

以下代码展示了如何禁用主机名验证:

mongocxx::uri uri("mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true");
mongocxx::client client(uri);

要了解有关禁用主机名验证的更多信息,请参阅 TLS 配置指南中的允许不安全的 TLS

以下代码展示了如何通过指定每种压缩算法来为MongoDB实例的连接启用压缩:

mongocxx::uri uri("mongodb://<hostname>:<port>/?compressors=snappy,zstd,zlib");
mongocxx::client client(uri);

要了解有关指定压缩算法的更多信息,请参阅网络压缩指南中的指定压缩算法

以下代码展示了如何指定zlib压缩算法并设立其压缩级别:

mongocxx::uri uri("mongodb://<hostname>:<port>/?compressors=zlib&zlibCompressionLevel=1");
mongocxx::client client(uri);

要了解有关设置 zlib 压缩级别的更多信息,请参阅网络压缩指南中的指定压缩算法

以下代码显示了如何启用Stable API以连接到MongoDB实例:

mongocxx::uri uri("<connection string>");
mongocxx::options::client client_options;
mongocxx::options::server_api server_api_options(mongocxx::options::server_api::version::k_version_1);
client_options.server_api_opts(server_api_options);
mongocxx::client client(uri, client_options);

要学习;了解有关 Stable API的更多信息,请参阅Stable API指南。

后退

后续步骤