摘要

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. 最新的爬虫工具requests-html

    使用Python开发的同学一定听说过Requsts库,它是一个用于发送HTTP请求的测试.如比我们用Python做基于HTTP协议的接口测试,那么一定会首选Requsts,因为它即简单又强大.现在作者 ...

  2. 把封装脚本做成jar包

    前提: eclipse, selenium, maven 把二次封装过的脚本做成jar包, 这样可以在新建工程里也调用封装过的方法. 实现步骤: 1. project 右键 => maven = ...

  3. MySQL 在线更改 Schema 工具

    MySQL在线更改schema的工具很多,如Percona的pt-online-schema-change. Facebook的 OSC 和 LHM 等,但这些都是基于触发器(Trigger)的,今天 ...

  4. ArrayBlockingQueue简介

    ArrayBlockingQueue基于数组,先进先出,从尾部插入到队列,从头部开始返回. 线程安全的有序阻塞队列,内部通过"互斥锁"保护竞争资源. 指定时间的阻塞读写 容量可限制 ...

  5. 【NOIP2011】 聪明的质监员

    小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是: 1. 给定 m个区间[Li,Ri]: 2. ...

  6. BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流

    BZOJ_4819_[Sdoi2017]新生舞会_01分数规划+费用流 Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞 ...

  7. maven+springmvc的配置

    1. 首先创建1个mavenweb项目  如果没有的话最好是去官网下载一个最新版本的eclipse  里面什么都有 maven/gradle 啥的 2. 选择路径   没啥影响 就是一个路径 默认就行 ...

  8. 《The java.util.concurrent Synchronizer Framework》 JUC同步器框架(AQS框架)原文翻译

    一.论文简介 闲来无事,看看源码,发现了一篇JDK作者的论文<The java.util.concurrent Synchronizer Framework>主要描述了作者对Abstrac ...

  9. React Native 之极光推送jpush-react-native 手把手配置

    这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大 ...

  10. 怎么构建vue-cli项目

    1.安装node.js(已安装可直接跳过,建议查看node版本,node -v): 2.npm包管理器,是集成在node中的,可跳过(npm -v): 3.由于npm的有些资源被墙,为了更快更稳定,所 ...