Skip to content

Instantly share code, notes, and snippets.

@satoruk
Created October 22, 2012 01:50
Show Gist options
  • Save satoruk/3929225 to your computer and use it in GitHub Desktop.
Save satoruk/3929225 to your computer and use it in GitHub Desktop.
MongoUtil

MongoUtil

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);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment