Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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在已经初始化的replicaset中添加mongo中的新节点?_Python_Mongodb_Amazon Web Services_Mongodb Query_Pymongo - Fatal编程技术网

Python 如何使用pymongo在已经初始化的replicaset中添加mongo中的新节点?

Python 如何使用pymongo在已经初始化的replicaset中添加mongo中的新节点?,python,mongodb,amazon-web-services,mongodb-query,pymongo,Python,Mongodb,Amazon Web Services,Mongodb Query,Pymongo,我正在使用pymongo创建一个复制集,代码示例如下: client = MongoClient(allIps[0]+':27017',username='mongo-admin', password='${mongo_password}', authSource='admin') db=client.admin config = {'_id': 'Harmony-demo', 'members': [ {'_id': 0, 'host': allIps[0]+'

我正在使用pymongo创建一个复制集,代码示例如下:

client = MongoClient(allIps[0]+':27017',username='mongo-admin', password='${mongo_password}', authSource='admin')
    db=client.admin
    config = {'_id': 'Harmony-demo', 'members': [
        {'_id': 0, 'host': allIps[0]+':27017'},
        {'_id': 1, 'host': allIps[1]+':27017'},
        {'_id': 2, 'host': allIps[2]+':27017'}]}
    db.command("replSetInitiate",config)
现在在将来,如果我的一个节点发生故障,我想使用pymongo再次在此replicaset中添加一个新主机,但我无法这样做,因为这会给我一个replicaset已经初始化的错误。我可以用mongo shell用这个

rs.add( { host: "mongodbd4.example.net:27017" } )
但是我想在python中也这样做,并且在pymongo的文档中没有找到任何内容。

使用复制命令

replSetReconfig命令修改现有副本集的配置。您可以使用此命令添加和删除成员,以及更改在现有成员上设置的选项。使用以下语法:

result = db.command('replSetGetConfig')
config = result['config']
max_member_id = max(member['_id'] for member in config['members'])

config['members'].append(
    {'_id': max_member_id + 1, 'host': 'mongodbd4.example.net:27017'}
)
config['version'] += 1 # update config version 
db.command('replSetReconfig', config)