摘要

driver 连接Mongo DB的url其实很简单,就是几个变量拼接成一个url,和关系型数据库没什么不同。但是因为mongo有单个instance和replicaSet不同的部署策略,还有mongo 节点有主从之分。所以配置参数容易混淆。另外Mongo NodeJs Driver版本不同,居然也会有坑。这里作个简单介绍

正文

mongo client 连接到db字符串

格式:

mongodb://username:password@host1,host2:27017/?replicaSet=rs1&write=1&readPreference=secondaryPreferred&connectTimeoutMS=300000

username

当DB enable auth后,需要用户名和密码就加上username:password。

replicaSet

单个 mongo db instance

不用填replicaSet

replica set

这边考虑加上多个host,防止某个host down了。客户端连接不上。replicaSet 参数看起来很奇怪,为什么DB 是单个instance还是个replicat set,要让应用程序知道呢。

但是目前mongo就是这么设计的,如果提供的是多个host 列表,那么没有replicaSet参数也可以,但是如果本身环境是replica set,而你只填写了一个host,并且没有replicaSet 参数,那么会将这个Mongo DB当做是一个standalone的db instance,不清楚它是一个集群环境。

host

坑1

这边的host,填ip,还是hostname。正确的做法就是填写在rs.status()中看到的members.host的配置。

之前将这个值配置成hostname。client端连接使用ip.在mongo nodejs driver 2.1.21中可以正常工作。但是将版本升级到了2.2.24.居然读不到了。后来将rs.status()中的host改成ip,才可以访问

cannot find the primary node

坑2

replica set 有primary 和secondary节点区分,但每个节点都就有其他节点的信息。所以host变量应该填primary node,还是secondary都可以。但是只给定secondary节点时在NodeJs driver的有些版本里面无法正常连接。

write,read

write,read 一致性设置。

cassandra 的consistency level设置是可以在单个query,insert的操作中去设置的。mongo貌似还没有看到在单个操作层面的一致性设置,只是在这边的数据库连接看到有设置

参考

https://docs.mongodb.com/manual/reference/connection-string/

mongo connections url string 的问题的更多相关文章

  1. 详解 SWT 中的 Browser.setUrl(String url, String postData, String[] headers) 的用法

    http://hi.baidu.com/matrix286/item/b9e88b28b90707c9ddf69a6e ———————————————————————————————————————— ...

  2. Getting SharePoint objects (spweb, splist, splistitem) from url string

    You basically get anything in the object model with one full url: //here is the site for the url usi ...

  3. DeprecationWarning: current URL string parser is deprecated解决方法

    我最近在使用mongoDB的时候,发现了这个警告语句,纳闷了,按照官方文档的教程去连接数据库还能出错,也是醉了. 后来尝试去阅读相关资料,发现只是需要将{ useNewUrlParser: true ...

  4. 关于nodejs DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

    const mongoose = require('mongoose') mongoose.connect("mongodb://localhost:27017/study", { ...

  5. go语言打造个人博客系统(一)

    go语言打造个人博客系统(一) 为什么选择go语言?   听说go语言是在几年前,但真正深入了解他却是在2017年,因为当时作为讲师 ,需要准备go语言的课程,结果稍一接触立刻就喜欢上这门语言了,作为 ...

  6. URL与String转换

    NSString *str = @"www.baidu.com"; NSURL *URL = [NSURL URLWithString:str];  //string>url ...

  7. spring-boot支持双数据源mysql+mongo

    这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的.同时存在.但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置 ...

  8. MongoDB源码分析——mongo与JavaScript交互

    mongo与JavaScript交互 源码版本为MongoDB 2.6分支     之前已经说过mongo是MongoDB提供的一个执行JavaScript脚本的客户端工具,执行js其实就是一个js和 ...

  9. cas的url中去掉jsessionid

    Servlet3.0规范中的<tracking-mode>允许你定义JSESSIONID是存储在cookie中还是URL参数中.如果会话ID存储在URL中,那么它可能会被无意的存储 在多个 ...

随机推荐

  1. Cassadra & presto 集群部署

    四台服务器部署cassandra集群 和 presto搜索引擎 及代码演示: 还有很多细节没有补充,有问题和疑问的地方 咋们一起探讨哇!1.创建用户    使用root用户登录应用服务器,执行以下操作 ...

  2. CSS透明opacity和IE各版本透明度滤镜filter的准确用法

    滤镜名    说明 Alpha     让HTML元件呈现出透明的渐进效果Blur     让HTML元件产生风吹模糊的效果Chroma     让图像中的某一颜色变成透明色DropShadow    ...

  3. selenium webdriver (python)大全

    webdriver的简介 硒2.0的主要新功能是集成的webdriver的API.webdriver的设计除了解决一些seleniumr-RC API的一些限制,与webdriver 的整合,将提供一 ...

  4. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  5. proxy.go

    )     for {         select {         case <-otherSwitch:             complete <- true          ...

  6. BZOJ2751 [HAOI2012]容易题

    Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取 ...

  7. java 日期类 小结

    import java.text.*; import java.util.*; class Test2 { public static void main(String[] args) { Syste ...

  8. C语言——输入输出函数

    0.getchar().putchar() 输入缓冲区,键盘输入是"行缓冲"遇到一个换行符的时候清空缓冲区. 标准流,stdin和stdout,是标准的输入输出流,键盘输入就是用的 ...

  9. java quartz 计算近20次执行时间

    /** * * @desc 计算表达式近20次时间 * @auth josnow * @date 2017年5月31日 下午12:16:25 * @param cron * @return */ pu ...

  10. selenium 元素(class_name、link_text、css_selector)定位方法

    通过元素的定位,使用firebug查找元素 1.示例一,class_name与link_text定位