高级连接(Advanced Connection)

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

简单的连接到独立服务器的示例,请参考MongoDB_C_Dirver使用教程

要连接到启用身份验证选项的服务器,请参考身份验证页 Authentication page

原文地址

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

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

#include <bson.h>
#include <mongoc.h> int
main (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)中的指定的主机。

更多信息

[Advanced Connections](#Advanced Connections)

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

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

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

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

#include <bson.h>
#include <mongoc.h> int
main (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;
}

更多信息

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

http://www.cnblogs.com/aoldman/p/4191822.html

http://www.cnblogs.com/huangfox/p/3543351.html

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可以看这里

MongoDB_C_Driver使用教程(2)高级连接的更多相关文章

  1. ASP.NET MVC 5 学习教程:创建连接字符串

    原文 ASP.NET MVC 5 学习教程:创建连接字符串 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...

  2. Java之旅_高级教程_Java Mysql连接(1)

    工具:Eclipse .mysql5.7 MySQL连接驱动:mysql-connector-java-5.1.27.jar    获取地址:https://dev.mysql.com/downloa ...

  3. 转+更新 Graphviz 教程,例子+ 高级应用 写代码,编程绘制架构图(分层拓扑图) 转自官网

    1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具. 它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”. Graphviz提供了dot语言来 ...

  4. Python教程:ORM连接Sqlite数据库,软件架构基础

    python语言因其语法简单易学习,且高效率应用广,近几年来发展迅猛,一度进入编程语言排行榜前六名.为了使程序员能更快的学习Python语言,所以写的此教程.也可以说是对自己学习的总结.但文章尽量会使 ...

  5. 树莓派VNC搭建相关教程+Ubuntu16.04连接vncserver灰屏问题!

    树莓派VNC搭建相关教程: 为了节省money,于是我决定用VNC界面来代替显示器,为后面做C++ Qt以及Python Qt开发打下基础,我别无选择!下面开始进入正题: 1-- 下载VNC-View ...

  6. ChemDraw教程之怎么连接ChemDraw结构

    将两个独立的ChemDraw结构连接到一起是使用者学习操作ChemDraw绘制窗口内容的基本能力之一.为了进一步了解ChemDraw软件,本教程将具体为您介绍怎么连接ChemDraw结构. 一.化学结 ...

  7. jsp连接sqlServer数据库教程、jsp连接sqlServer数据库报ClassNotFoundException异常

    jsp连接sqlServer数据库教程: 首先讲下我用的工具版本以供参考: jar包:jtds1.3.1.jar  下载地址:点击进入 数据库:SQL Server2012 服务器:Tomcat8.0 ...

  8. GStreamer基础教程04 - 动态连接Pipeline

    摘要 在以前的文章中,我们了解到了2种播放文件的方式:一种是在知道了文件的类型及编码方式后,手动创建所需Element并构造Pipeline:另一种是直接使用playbin,由playbin内部动态创 ...

  9. MySQL安装教程及Navicat连接MySQL报错:1251-Client does not support authentication protocol requested by server

    MySQL安装可参考: MySql 8.0.18安装 此参考文章后面涉及到的密码修改,对本标题碰到的错误同样适用. 本文先讲如何安装,在讲碰到的1251问题.要直接看解决方案的朋友可以直接通过目录链接 ...

随机推荐

  1. http协议进阶(三)补充:报文首部

    之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...

  2. SpringBoot应用部署[转]

    在开发spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jett ...

  3. python实现计算器

    计算器功能 实现优先级解析,加减乘除四则运算 自定义小数位精度 实现思想: 先找到最里层括号,根据乘除,加减优先级,调用写好的乘除.加减运算函数算出括号内总值,再将原括号式用所得值替换,此过程循环进行 ...

  4. iOS地图 -- 定位初使用

    iOS的定位服务用到的框架是#import <CoreLocation/CoreLocation.h> 定位中用到的类是CLLocationManager 一.iOS8.0之前的定位 向用 ...

  5. 【51Nod 1622】【算法马拉松 19C】集合对

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...

  6. Python笔记(4)类__属性与描述符

    部分参考自:http://www.geekfan.net/7862/ 新式类与经典类 2和3不一样,3都是新式类. 新式类和经典类的区别: class A: #classic class " ...

  7. HTTP Content-type 对照表

    Application Type 文件扩展名 Content-Type(Mime-Type) 描述 . application/x-   .* application/octet-stream 二进制 ...

  8. Win7中怎么不经确认直接删除文件至回收站

    Win7中怎么不经确认直接删除文件至回收站.. 1.双击桌面回收站的图标,进入回收站后,在空白处点击右键,选择属性:2.在回收站的属性对话框,最下边,把"显示删除确认对话框”前边的√去掉,应 ...

  9. ArcGIS Server开发教程系列(7)使用ArcGIS API for Javascript-Hello World

    ArcGIS API for Javascript  API下载地址:http://support.esrichina-bj.cn/2011/0223/960.html 选择最新的下载就好了,目前是3 ...

  10. Web开发技术发展历史

    Web开发技术发展历史   来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...