Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyMongo-将次映像用作种子时写入主映像_Python_Mongodb_Pymongo_Pymongo 3.x - Fatal编程技术网

Python PyMongo-将次映像用作种子时写入主映像

Python PyMongo-将次映像用作种子时写入主映像,python,mongodb,pymongo,pymongo-3.x,Python,Mongodb,Pymongo,Pymongo 3.x,我正在尝试连接到我的MongoDB并更新文档。 我们使用副本服务器作为种子,然后我们想要编写一个集合(特别是更新文档) 无论我做什么,每次尝试更新给定文档时,都会出现以下错误:NotMasterError:not master,完全错误:{'ok':0.0,'errmsg':'not master','code':10107,'codeName':'NotMaster'} 我试着将read pereference更改为Primary,将write concert更改为w:1,但似乎没有任何效果

我正在尝试连接到我的MongoDB并更新文档。 我们使用副本服务器作为种子,然后我们想要编写一个集合(特别是更新文档)

无论我做什么,每次尝试更新给定文档时,都会出现以下错误:
NotMasterError:not master,完全错误:{'ok':0.0,'errmsg':'not master','code':10107,'codeName':'NotMaster'}

我试着将read pereference更改为Primary,将write concert更改为w:1,但似乎没有任何效果

当我调试时,我可以看到客户机发现了网络中的所有机器,包括实际的主机

使用另一种语言的Mongo库(Scala中的Reactivemongo),这是自动完成的,但使用PyMongo我似乎很挣扎。如何确保将更新转发到主节点


如果有人能帮忙,那太好了:)

阅读优先权适用于阅读。它对书写没有影响。所有写入操作都必须发送到主服务器

您应该连接到副本集(也称为“发现拓扑”),而不是使用直接连接,然后为二次读取指定读取首选项。

因此感谢@answer,我确保在初始化MongoClient时,通过添加关键字param连接到特定的副本集:
client=MongoClient(uri,replicset='my-replica-set-name')

要了解复制集名称是什么(如果您不知道),可以查看服务器状态并转到conf key
repl.setName


再次感谢:)

谢谢,成功了!