Node.js Mongoose读取首选项标记不工作

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

我有一个Mongo副本集,在美国有一个主副本集,在欧洲有一个从副本集,在相同的位置有节点服务器实例运行Node with Mongoose

Mongo实例有标记,美国的
{“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选项,然后重试。那么告诉我这有多不对。