【NoSQL】mongo_detail.py中均衡器信息的处

  

【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;
  } 

【NoSQL】mongo_detail.py中均衡器信息的处