如何在MongoDB中获取rs.conf()中的当前成员索引?
How to get current member index in rs.conf() in MongoDB?
我正在创建一个带有隐藏辅助 MongoDB 实例的 Docker 容器用于数据备份目的。
我发现将 MongoDB 实例配置为隐藏辅助实例的唯一方法是在其启动后获取 rs.conf()
并设置 votes
、priority
和 priority
的相应成员值hidden
。但是,我无法自动找出成员数组中当前实例的集群成员索引是什么。有什么想法吗?
这是需要执行的脚本,其中2应该替换为当前成员索引。
cfg = rs.conf()
cfg.members[2].priority = 0
cfg.members[2].votes = 0
cfg.members[2].hidden = true
rs.reconfig(cfg)
可能是这样的:
rso:PRIMARY> var myid=0;var x=0;var myself=db.isMaster().me ;rs.conf().members.forEach(function(d){ if(d.host==myself){ myid=x;print("The id is: "+myid)};x=x+1; })
The id is: 2
rso:PRIMARY> cfg.members[myid].priority=0
解释:
- 通过 db.isMaster().me
获取 'host:port'
- 遍历所有 conf().members 并搜索哪一个是我
- 将myid分配给我这个成员。
我正在创建一个带有隐藏辅助 MongoDB 实例的 Docker 容器用于数据备份目的。
我发现将 MongoDB 实例配置为隐藏辅助实例的唯一方法是在其启动后获取 rs.conf()
并设置 votes
、priority
和 priority
的相应成员值hidden
。但是,我无法自动找出成员数组中当前实例的集群成员索引是什么。有什么想法吗?
这是需要执行的脚本,其中2应该替换为当前成员索引。
cfg = rs.conf()
cfg.members[2].priority = 0
cfg.members[2].votes = 0
cfg.members[2].hidden = true
rs.reconfig(cfg)
可能是这样的:
rso:PRIMARY> var myid=0;var x=0;var myself=db.isMaster().me ;rs.conf().members.forEach(function(d){ if(d.host==myself){ myid=x;print("The id is: "+myid)};x=x+1; })
The id is: 2
rso:PRIMARY> cfg.members[myid].priority=0
解释:
- 通过 db.isMaster().me 获取 'host:port'
- 遍历所有 conf().members 并搜索哪一个是我
- 将myid分配给我这个成员。