Node.js Mongoose读取首选项标记不工作
我有一个Mongo副本集,在美国有一个主副本集,在欧洲有一个从副本集,在相同的位置有节点服务器实例运行Node with Mongoose Mongo实例有标记,美国的Node.js Mongoose读取首选项标记不工作,node.js,mongodb,mongoose,replicaset,Node.js,Mongodb,Mongoose,Replicaset,我有一个Mongo副本集,在美国有一个主副本集,在欧洲有一个从副本集,在相同的位置有节点服务器实例运行Node with Mongoose Mongo实例有标记,美国的{“location”:“US”}和欧洲的{“location”:“eu”}。我正在尝试从欧洲节点服务器执行读取操作。当readPreference设置为master时,读取平均需要450毫秒。当设置为最近时,需要70毫秒 在后一种情况下,Mongoose/Mongo连接URL是这样的: ?replicaSet=MyReplica
{“location”:“US”}
和欧洲的{“location”:“eu”}
。我正在尝试从欧洲节点服务器执行读取操作。当readPreference
设置为master
时,读取平均需要450毫秒。当设置为最近时,需要70毫秒
在后一种情况下,Mongoose/Mongo连接URL是这样的:
?replicaSet=MyReplicaSet&readPreference=nearest
现在,我想测试读取首选项标记。为此,我将查询修改为如下所示:
?replicaSet=MyReplicaSet&readPreference=nearest&readPreferenceTags=location:us
然而,即使它现在应该从美国而不是欧洲选择最近的节点,平均读取时间仍然在70毫秒左右,远低于预期的450毫秒
Mongo URI作为第一个参数传递给mongoose.createConnection
调用。我使用的是Mongoose版本4.4.5
,作为依赖项,它使用Mongodb版本2.1.16
该版本的Mongoose是否不支持通过连接URI传入readPreferenceTags,或者我是否做了一些完全错误的事情?看起来
readPreference=nearest
覆盖了readPreferenceTags=location:us
的标记集选择,因此请尝试删除冲突选项。这些选项应该直接通过,但当然,您可以尝试使用基本节点驱动程序连接一个小程序,以验证实际上没有干扰。恐怕这是错误的。下面是阅读首选项文档的一段摘录:“然而,最近的阅读模式与标记集结合使用时,会选择网络延迟最低的匹配成员。”来源:说“这不对”的人错了。只需以这种方式设置URI选项,然后重试。那么告诉我这有多不对。