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