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

Mongodb 将单个数据库中的所有集合转换为新的数据库,mongodb,Mongodb,你能帮帮我吗, 我正在尝试将特定数据库中的所有集合复制到“创建新数据库”中,并将该集合移动到其中。数据库中我的collection名称包含两部分“mg2.data”,“mg32.data”,我想创建新数据库mg2并将集合名称复制为数据。 集合名称mg2.data假定位于mg2数据库和集合名称数据中 db.getCollectionNames().forEach(function( a ){ if(a!='system.indexes' ) { var sp = a.split('.'); var

你能帮帮我吗, 我正在尝试将特定数据库中的所有集合复制到“创建新数据库”中,并将该集合移动到其中。数据库中我的collection名称包含两部分“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 name Master,它包含大约60-70个集合,其名称如下(mg1.data,mg2.data,mg3.data) 我希望它是这样的 db名称mg1和集合名称数据 db名称mg2和集合名称数据等。。
我面临的问题是,在第一次设计中,写操作会锁定整个数据库(Master)。我现在不能支持切分和所有的方法。

这种方法对我来说很有效。我不知道这是最好的方法吗

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

}
});

您不直接复制数据库有什么具体原因吗?对不起,我误解了您的问题。是否报告了任何错误?请重新表述您的问题,这是不可理解的。为什么不只是mongoexport旧数据库中的集合,然后mongoimport到新数据库中呢。或者我遗漏了什么?请更清楚地解释一下你的目标和你在努力实现目标时遇到的问题……对,我不知道你到底想做什么。