博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB_C_Driver使用教程(2)高级连接
阅读量:6860 次
发布时间:2019-06-26

本文共 2600 字,大约阅读时间需要 8 分钟。

高级连接(Advanced Connection)

以下指南包含MongoDB配置的特定类型的信息。

简单的连接到独立服务器的示例,请参考。
要连接到启用身份验证选项的服务器,请参考。

1、连接到一个副本集(Replica Set)

连接到一个副本集与连接到独立的MongoDB服务器类似。只需要使用?replicaSet=副本集名指定URI的副本集名字选项。

#include 
#include
intmain (int argc, char *argv[]){ mongoc_client_t *client; /* 初始化libmongoc's */ mongoc_init (); /* 创建 MongoDB Client连接到副本集 */ client = mongoc_client_new ("mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset"); /* Do some work */ /* TODO */ /* 清理 */ mongoc_client_destroy (client); mongoc_cleanup (); return 0;}

MongoDB连接字符串URI中可以指定多个主机名(hostname),使用,分割种子列表(seed list)中的指定的主机。

更多信息

2、连接到分片集群(Sharded Cluster)

连接到分片集群,需要指定client要连接的mongos节点mongodb c dirver中会自动检查已连接到的mongo分片服务器。

如果指定多个主机名,则种子列表(seed list)的创建将会在mongos实例之间尝试故障转移。

连接到分片服务器时,指定replicaSet参数是无效的。

#include 
#include
intmain (int argc, char *argv[]){ mongoc_client_t *client; /* 初始化libmongoc's */ mongoc_init (); /* 创建MongoDB Client连接到分片集群 */ client = mongoc_client_new ("mongodb://myshard01:27017/"); /* Do something with client ... */ /* 释放client */ mongoc_client_destroy (client); mongoc_cleanup (); return 0;}

更多信息

关于集群,分布式集群等内容,可以参考

3、连接到IPv6地址

mongodb c dirver将自动解析IPv6地址到主机名(hostname)。在URI中指定IPv6地址时,需要使用[]进行包裹。

mongoc_uri_t *uri = mongoc_uri_new ("mongodb://[::1]:27017");

4、连接到Unix Domain Socket(Unix域套接字)

在类Unix系统中,mongodb c dirver可以直接连接到使用Unix域套接字MongoDB服务器。只需要传入这个socket的路径,但必须使用.sock后缀。

mongoc_uri_t *uri = mongoc_uri_new ("mongodb:///tmp/mysocket.sock");

直接连接到Unix域套接字不是常见做法。

5、通过SSL连接到服务器

以下是配置TLS/SSL连接的说明。

基本配置

运行本地服务器(端口27017)示例

$ mongod --port 27017 --sslMode requireSSL --sslPEMKeyFile server.pem --sslCAFile ca.pem

添加/?ssl=true到客户端URI尾部

mongoc_client_t *client = NULL;client = mongoc_client_new ("mongodb://localhost:27017/?ssl=true");

指定客户端证书

默认情况下,MongoDB要求指定客户端证书,除非在提供--sslAllowConnectionsWithoutCertificates情况下。mongodb c dirver可以使用mongoc_ssl_opt_t为客户端配置证书。

/* 获取默认的ssl选项 */const mongoc_ssl_opt_t *ssl_default = mongoc_ssl_opt_get_default ();/* 使用的ssl选项结构体 */mongoc_ssl_opts_t ssl_opts = { 0 };/* 可以选择从用户自定义的目录或文件拷贝;否则使用默认值. */memcpy (&ssl_opts, ssl_default, sizeof ssl_opts);   // 使用默认值//ssl_opts.pem_file = "client.pem";   // 使用自定义pem文件/* 为客户端设置ssl选项 */mongoc_client_set_ssl_opts (client, &ssl_opts);

通过pem_file提供的客户端证书必须由--sslCAFile列出的服务器信任的证书颁发机构之一颁发。或者由服务器上的本地证书存储中的 CA 颁发,在使用默认值时。

为了验证一个指定的CA服务器的证书,需要提供PEM armored文件(PEM装甲文件)和CA证书。或CA证书列表包含使用ca_file选项在,或CA的c_rehash目录结构。当没有提供ca_fileca_dirmongodb c dirver将使用本机平台证书存储区提供的CA。

6、其他连接选项

其他的连接选项的MongoDB URI可以看

转载地址:http://kfxyl.baihongyu.com/

你可能感兴趣的文章
HTML5 做波形运动的小球
查看>>
初步学习Django-第四篇:views.PY文件详解
查看>>
OAuth2简易实战(四)-Github社交联合登录
查看>>
Netty学习大纲
查看>>
OC中的私有方法
查看>>
20060427: 部分汉化Together Workflow Editor
查看>>
CentOS中配置VNC Server
查看>>
Table '.\mysql\proc' is marked as crashed and should be repaired 报错
查看>>
分享几段JavaScript
查看>>
C++中的多态和Objective-C中的“多态”
查看>>
js基础五
查看>>
构建执法阅读笔记01
查看>>
【Update】C# 批量插入数据 SqlBulkCopy
查看>>
剑指offer:合并两个排序的链表
查看>>
1602液晶显示实验
查看>>
HTTP慢速DOS(slow http denial of service attack)
查看>>
图片水印
查看>>
Quart2D的基本介绍
查看>>
Lua点号和冒号区别
查看>>
STL基础
查看>>