MongoDB-循环遍历每个数据库并运行命令

MongoDB-循环遍历每个数据库并运行命令,mongodb,Mongodb,我的MongoDB实例有几个设计相同的数据库。我希望遍历每个数据库,并对每个数据库中的几个集合应用唯一的索引 我知道如何将新的唯一索引应用于集合,但如何循环遍历每个数据库并在每个数据库上运行命令 db.collection.createIndex ( { email : 1 }, { unique : true, collation : { locale : "en", strength : 2 } } ) 一般的想法是循环遍历从命令返回的列表 或 db.getMongo()

我的MongoDB实例有几个设计相同的数据库。我希望遍历每个数据库,并对每个数据库中的几个集合应用唯一的索引

我知道如何将新的唯一索引应用于集合,但如何循环遍历每个数据库并在每个数据库上运行命令

db.collection.createIndex (
    { email : 1 },
    { unique : true, collation : { locale : "en", strength : 2 } }
)

一般的想法是循环遍历从命令返回的列表

db.getMongo().getDBNames()

在循环中,使用方法创建db对象,并使用循环每个db的集合,使用
db[collectionName]
括号语法获取集合对象,并创建索引,如下所示:

mongo = db.getMongo(); // or mongo = new Mongo();
mongo.getDBNames().forEach(function(dbname){
    db = mongo.getDB(dbname);
    db.getCollectionNames().forEach(function(collectionName) {
        collection = db.getCollection(collectionName); // or db[collectionMame]
        indexes = collection.getIndexes();
        print("Indexes for " + collectionName + ":");
        printjson(indexes);

        emailIdx = indexes.filter(function(idx){ return idx.key === { "email": 1 }; });
        if (emailIdx.length < 1) {
            collection.createIndex (
                { email : 1 },
                { unique : true, collation : { locale : "en", strength : 2 } }
            )
        }
    });
})
mongo=db.getMongo();//或mongo=新的mongo();
mongo.getDBNames().forEach(函数(dbname){
db=mongo.getDB(dbname);
db.getCollectionNames().forEach(函数(collectionName){
collection=db.getCollection(collectionName);//或db[collectionMame]
index=collection.getIndexes();
打印(“索引为“+collectionName+”:”);
printjson(索引);
emailIdx=index.filter(函数(idx){return idx.key==={“email”:1};});
如果(emailIdx.length<1){
collection.createIndex(
{电子邮件:1},
{唯一:true,排序规则:{locale:“en”,强度:2}
)
}
});
})
可以找到有用的Mongo shell备忘单