2014-08-28 35 views
4

你能幫我嗎 我想將特定數據庫中的所有集合複製到創建新數據庫並將該集合移入它中,但以下代碼不起作用。而我的數據庫中的集合名包含兩部分'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)); 

} 
}); 

這是我的情況的詳細信息。

我有數據庫名碩士,它包含約60-70集的名稱,如(mg1.data,mg2.data,mg3.data) ,我希望它像 DB名MG1和集合名稱數據 db名稱mg2和集合名稱數據等等。 我面臨的問題是,當在第一個設計中寫操作鎖定整個數據庫(Master)時。我現在不能去分拆。

+0

有你爲什麼不直接拷貝數據庫的任何具體的原因是什麼? – yaoxing 2014-08-28 09:48:55

+0

對不起,我誤解了你的問題。是否有任何錯誤報告? – yaoxing 2014-08-28 10:07:34

+1

請重新說出你的問題,這是不可理解的。 – vmr 2014-08-28 12:01:56

回答

4

我得到這個方法對我,我不知道是工作的這一最佳形式給出

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

} 
}); 
相關問題