MongoDBの便利なサーバー関数等をまとめたものです.
Copyright © 2012 @satoruk Distributed under the MIT License.
MongoDBの便利なサーバー関数等をまとめたものです.
Copyright © 2012 @satoruk Distributed under the MIT License.
var configDB, infos; | |
infos = {}; | |
configDB = db.getSisterDB('config'); | |
configDB.shards.find().sort({_id:1}).forEach(function(v){ | |
var host, mongo, info, stat; | |
//shellPrint(v); | |
if (!v.host.match(/([^\/]+)$/)) return; | |
host = RegExp.$1.split(',').shift(); | |
mongo = new Mongo(host); | |
stat = mongo.adminCommand({ replSetGetStatus: 1 }); | |
info=[]; | |
infos[stat.set]=info; | |
stat.members.forEach(function(m){ | |
info.push({name:m.name, state:m.stateStr, health:m.health}); | |
}); | |
}); | |
var headers = null; | |
var formats={}; | |
for (var set in infos) { | |
infos[set].forEach(function(v){ | |
if (headers == null) { | |
headers = {}; | |
for (var k in v) headers[k]=k; | |
} | |
for (var k in v) { | |
formats[k] = isNaN(formats[k]) ? 0: formats[k]; | |
formats[k] = Math.max(formats[k], k.length); | |
formats[k] = Math.max(formats[k], (v[k]+"").length); | |
} | |
}); | |
} | |
var printSep = function(){ | |
var vals = []; | |
for (var k in headers) { | |
vals.push('---------------------------------------'.substr(0, formats[k])); | |
} | |
print(' ' + vals.join('-+-')); | |
}; | |
var printDatas = function(datas){ | |
var vals = []; | |
for (var k in datas) { | |
vals.push((datas[k] + ' ').substr(0, formats[k])); | |
} | |
print(' ' + vals.join(' | ')); | |
}; | |
for (var set in infos) { | |
print('[' + set + ']'); | |
printDatas(headers); | |
printSep(); | |
infos[set].forEach(function(v){ | |
printDatas(v); | |
}); | |
} | |