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