将单个数据库中的所有集合转换为新的dbs

时间:2014-08-28 07:30:16

标签: mongodb

你能帮帮我吗 我试图将特定数据库中的所有集合复制到创建新数据库并将该集合移入其中。但以下代码不起作用。我的数据库中的我的收藏品名称包含两个部分' mg2.data' ' mg32.data'我想创建新的数据库mg2并将集合名称复制为数据。 集合名称mg2.data假设为mg2数据库和集合名称数据。

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)。我现在不能去分片了。

1 个答案:

答案 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); });

}
});