【ToolsForMongo】mongo_detail.py中均衡器信息的处理思路
先看下几种典型状况下的<代码> db.settings.find ({“_id”:“均衡器”})代码>输出:
1。创建蒙戈之后,从未设置均衡器时:
<=坝镅詊avascript代码类> mongos>var x=db.settings.findOne ({“_id”:“均衡器”}) mongos>x==零 真正的 mongos>sh.getBalancerState () 真正的代码>
2。创建了蒙戈之后,因故手动关闭了均衡器
<=坝镅詊avascript代码类> mongos>db.settings.findOne ({“_id”:“均衡器”}) {" _id ":“均衡器”,“模式”:“关”,“停止”:真正的} mongos>sh.getBalancerState () 假代码>
3。设置了均衡器的运行时间段,但当前时间不在其中
<=坝镅詊avascript代码类> mongos>var x=db.settings.findOne ({“_id”:“均衡器”}) mongos>x { “_id”:“均衡器”, “停止”:没错, " activeWindow ": { “开始”:“0”, “停止”:“06:00时” } } mongos>sh.getBalancerState () 假代码>
4。设置了均衡器的运行时间段,当前时间在其中
<=坝镅詊avascript代码类> mongos>var x=db.settings.findOne ({“_id”:“均衡器”}) mongos>x { “_id”:“均衡器”, “停止”:假的, " activeWindow ": { “开始”:“0”, “停止”:“22:00” } } mongos>sh.getBalancerState () 真正的代码>
再看下官方mongo shell中的js代码
<=坝镅詊avascript代码类> mongos>sh.getBalancerState 函数(configDB) { 如果(configDB===定义) configDB=sh._getConfigDB (); var x=configDB.settings。findOne ({_id:“均衡器”}); 如果(x==null) 返回true; 返回! x.stopped; }代码>
1。先处理了configDB不是默认的配置库的情况
2。<代码> x==null 代码>代表了上面的从未设置均衡器,默认开启的状况
3。对返回值中的鸡毛蒜皮项进行取反,得到是否正在运行
<=坝镅詊avascript代码类> mongos>sh.isBalancerRunning 函数(configDB) { 如果(configDB===定义) configDB=sh._getConfigDB (); var x=configDB.locks。findOne ({_id:“均衡器”}); 如果(x==null) { 打印(“配置。锁空集合或失踪。确保你连接到一个蒙戈”); 返回错误; } 返回x。国家比;0; }代码>