var st = rs.status();
var cfg = rs.config();
st.members.forEach(s=>{if(s.health == 0) { for (var i=0;i<cfg.members.length;i++) { if(cfg.members[i]._id==s._id) {cfg.members[i].votes=0;cfg.members[i].priority=0;}}}});
rs.reconfig(cfg, {force:true});
db.adminCommand({listDatabases:1}).databases.forEach(function(dd) {if (!Array.contains(["admin","local","config"], dd.name)) { var d = db.getSiblingDB(dd.name); d.getCollectionInfos().forEach(function(c) {if(c.type == 'collection' && c.name != 'system.views' && c.name != 'system.profile' && c.name != 'system.js') {var res = d.getCollection(c.name).aggregate([{$indexStats:{}}, {"$project":{name:"$name",ops:"$accesses.ops", since:"$accesses.since"}}]); while(res.hasNext()) {var r=res.next(); if (r.name != "_id_") {print("'"+d+"'.'"+c.name+"'.'"+r.name+"': ops="+r.ops+", since="+r.since)}}}})}})
for(var i = 0; i <= 10000; i++) {
var elemId = Math.ceil(Math.random()*1000)+1;
for(var j = 0; j <= Math.ceil(Math.random()*1000)+200; j++) {
var dt = new Date(Date.now() - (Math.ceil(Math.random() * 1000 * 60 * 60 * 24*1000)));
var value = (Buffer.allocUnsafe(100000)).toString();
db.mytest.insertOne({"elemId":elemId, "dt":dt, "value":value})
}
}
var ignoreKeys = ["v", "key", "name", "ns", "safe", "force"];
var ignoreDBs = ["admin","local","config"];
var ignoreIndexes = ['{"_id":1}'];
var dbs = db.getMongo().getDBs().databases.filter(function(dbb) {
return !Array.contains(ignoreDBs, dbb.name)
});
dbs.forEach(function(dbData) {
var name = dbData.name;
var database = db.getSiblingDB(name);
var collections = database.getCollectionNames();
collections.forEach(function(collectionName){
var collection = database.getCollection(collectionName)
var indexes = collection.getIndexes().filter(function(index) {
return !Array.contains(ignoreIndexes, JSON.stringify(index.key))
});
indexes.forEach(function(index) {
var options = { "background": "true" };
var keys = Object.keys(index).filter(function(key) {
return !Array.contains(ignoreKeys, key)
});
keys.forEach(function(key) {
options[key] = index[key]
});
print('db.getSiblingDB("'+name+'").getCollection("'+collectionName+'").createIndex(' + JSON.stringify(index.key) + ',' + JSON.stringify(options) + ")");
})
})
});