db.getCollectionNames().forEach(function( a ){
if(a!='system.indexes' ) {
var sp = a.split('.');
var dbName = sp[0];
var col = sp[1];
//print(dbName)
db[a].copyTo(db.getSiblingDB(dbName).getcCollection(col));
}
});
以下是我的情况详情。
我有Db名称Master,它包含大约60-70个集合,其名称如(mg1.data,mg2.data,mg3.data) 我希望它像 db name mg1和集合名称数据 db name mg2和集合名称数据等等。 我面临的问题是,在第一次设计时,写操作会锁定整个数据库(Master)。我现在不能去分片了。
答案 0 :(得分:3)
我让这种方法为我工作。我不知道这是最好的方法
db.getCollectionNames().forEach(function( a ){
if(a!='system.indexes' ) {
var sp = a.split('.');
var dbName = sp[0];
var col = sp[1];
print(dbName+'\n');
//db[a].copyTo(db.getSiblingDB(dbName).getcCollection(col));
db[a].find().forEach(function(d){ db.getSiblingDB(dbName)[col].insert(d); });
}
});