MongoDB_C_Driver使用教程(2)高级连接
高级连接(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_file
或ca_dir
,mongodb c dirver
将使用本机平台证书存储区提供的CA。
6、其他连接选项
其他的连接选项的MongoDB URI
可以看这里
MongoDB_C_Driver使用教程(2)高级连接的更多相关文章
- ASP.NET MVC 5 学习教程:创建连接字符串
原文 ASP.NET MVC 5 学习教程:创建连接字符串 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- Java之旅_高级教程_Java Mysql连接(1)
工具:Eclipse .mysql5.7 MySQL连接驱动:mysql-connector-java-5.1.27.jar 获取地址:https://dev.mysql.com/downloa ...
- 转+更新 Graphviz 教程,例子+ 高级应用 写代码,编程绘制架构图(分层拓扑图) 转自官网
1. Graphviz介绍 Graphviz是大名鼎鼎的贝尔实验室的几位牛人开发的一个画图工具. 它的理念和一般的“所见即所得”的画图工具不一样,是“所想即所得”. Graphviz提供了dot语言来 ...
- Python教程:ORM连接Sqlite数据库,软件架构基础
python语言因其语法简单易学习,且高效率应用广,近几年来发展迅猛,一度进入编程语言排行榜前六名.为了使程序员能更快的学习Python语言,所以写的此教程.也可以说是对自己学习的总结.但文章尽量会使 ...
- 树莓派VNC搭建相关教程+Ubuntu16.04连接vncserver灰屏问题!
树莓派VNC搭建相关教程: 为了节省money,于是我决定用VNC界面来代替显示器,为后面做C++ Qt以及Python Qt开发打下基础,我别无选择!下面开始进入正题: 1-- 下载VNC-View ...
- ChemDraw教程之怎么连接ChemDraw结构
将两个独立的ChemDraw结构连接到一起是使用者学习操作ChemDraw绘制窗口内容的基本能力之一.为了进一步了解ChemDraw软件,本教程将具体为您介绍怎么连接ChemDraw结构. 一.化学结 ...
- jsp连接sqlServer数据库教程、jsp连接sqlServer数据库报ClassNotFoundException异常
jsp连接sqlServer数据库教程: 首先讲下我用的工具版本以供参考: jar包:jtds1.3.1.jar 下载地址:点击进入 数据库:SQL Server2012 服务器:Tomcat8.0 ...
- GStreamer基础教程04 - 动态连接Pipeline
摘要 在以前的文章中,我们了解到了2种播放文件的方式:一种是在知道了文件的类型及编码方式后,手动创建所需Element并构造Pipeline:另一种是直接使用playbin,由playbin内部动态创 ...
- MySQL安装教程及Navicat连接MySQL报错:1251-Client does not support authentication protocol requested by server
MySQL安装可参考: MySql 8.0.18安装 此参考文章后面涉及到的密码修改,对本标题碰到的错误同样适用. 本文先讲如何安装,在讲碰到的1251问题.要直接看解决方案的朋友可以直接通过目录链接 ...
随机推荐
- JAVA object
1.toString 把对象变成字符串 对于一个引用型变量toString写不写都是一样的 2.equals() 比较两个对象的引用是否一样. 3. public class EqualsTest ...
- 从数据库导出到excel
在项目 扬中 News shenbaocreateall //选中的id string cc = Request["IDcheck"]; Response.C ...
- Gradle 10分钟上手指南
java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强大,但是过 ...
- 【笔记4】用pandas实现条目数据格式的推荐算法 (基于用户的协同)
''' 基于用户的协同推荐 条目数据 ''' import pandas as pd from io import StringIO import json #数据类型一:条目(用户.商品.打分)(避 ...
- 跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享
在我们日常的项目开发时使用AJAX,传统的Ajax请求只能获取在同一个域名下面的资源,但是HTML5打破了这个限制,允许Ajax发起跨域的请求.浏览器是可以发起跨域请求的,比如你可以外链一个外域的图片 ...
- 淘宝WAP版小BUG分析
前几天发现的一个淘宝WAP版的小BUG,就是用桌面版chrome看的时候产品评价中的图片显示不出来,都是图裂了. 这是什么原因呢?图片为什么会显示不出来呢?淘宝的技术人员.测试人员不可能没发现啊.开启 ...
- 谈谈我的windows服务器运维管理
我们开发的页游General War(http://gw.gamebox.com)上线运营也有半年多了,服务器的开发到运维基本都由我一手包办,在服务器上线之后我们又招了一个程序员接手后续功能的开发,而 ...
- .Net Core Linux centos7行—安装nginx,运行静态网站
使用编译安装方式安装nginx Nginx下载地址:http://nginx.org/en/download.html.下载Stable version(稳定版就好).当前稳定版:http://ngi ...
- Android进程整理
一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进 ...
- MongoDB Node.js driver
Node.js连接MongoDB的简单实例 安装Node.js driver npm install mongodb -save 连接 var MongodbClient = require('mon ...